单选按钮的奇怪结果
Weird results from radio button
我有一个页面,里面有一些单选按钮,还有一个图形和图例。当单选按钮更改时,调用onchange方法,这应该做两件事:1.更改图例显示的部分2.使用适当的数据重新绘制图形。
这是HTML的剪辑:
<div id="divDailyRadioButtons" style="width:300px; ">
<div class="divDailyRadio" style="left:25;top:50;"><input type="radio" name="radTotalHours" value="Total" onchange="sm_controller.Events_OnChangeDailyGraphsRadios();" />Total Hours</div>
<div class="divDailyRadio" style="left:25; top:75;"><input type="radio" name="radTotalHours" value="CF" onchange="sm_controller.Events_OnChangeDailyGraphsRadios();" />Customer-Facing</div>
<div class="divDailyRadio" style="left:25; top:100;"><input type="radio" name="radTotalHours" value="NCF" onchange="sm_controller.Events_OnChangeDailyGraphsRadios();" />Non-Customer Facing</div>
</div>
这是一个功能剪辑:
switch($('input[name=radTotalHours]:checked').val())
{
case 'Total':
$('#rowDailyCFGraphsLegend').show();
$('#rowDailyNCFGraphsLegend').show();
break;
case 'CF':
$('#rowDailyCFGraphsLegend').show();
$('#rowDailyNCFGraphsLegend').hide();
break;
case 'NCF':
$('#rowDailyCFGraphsLegend').hide();
$('#rowDailyNCFGraphsLegend').show();
break;
}
好吧,奇怪的是。。。我得到的值不是所选单选按钮的值,而是上一个单选按钮。经过一番搜索,我添加了一些console.log行进行检查:
console.log('val1: ' + $('input:radio[name=radTotalHours]').val());
console.log('val2: ' + $('input:radio[name=radTotalHours]:checked').val());
console.log('val3: ' + $('input[name=radTotalHours]').val());
console.log('val4: ' + $('input[name=radTotalHours]:checked').val());
val1和val3始终显示"总计",而val2和val4始终匹配,但显示上一个单选按钮的值。
我甚至添加了以下内容:
$('input', '#divDailyRadioButtons').each(function(){
if($(this).attr('checked') == 'checked')
console.log('val: ' + $(this).val());
else
console.log('xxx');
});
但在这里,if语句总是传递"Total",无论选择了哪个单选按钮。
顺便说一句,我不得不使用IE9。
有人知道这里发生了什么吗?
尝试使用$(this)
:而不是switch($('input[name=radTotalHours]:checked').val())
function yourRadioChangeHandler() {
switch($(this).val()) // here 'this' is a changed radio object
{
case 'Total':
$('#rowDailyCFGraphsLegend').show();
$('#rowDailyNCFGraphsLegend').show();
break;
case 'CF':
$('#rowDailyCFGraphsLegend').show();
$('#rowDailyNCFGraphsLegend').hide();
break;
case 'NCF':
$('#rowDailyCFGraphsLegend').hide();
$('#rowDailyNCFGraphsLegend').show();
break;
}
}
<div class="divDailyRadio" style="left:25;top:50;"><input type="radio" name="radTotalHours" value="Total" onchange="yourRadioChangeHandler();" />Total Hours</div>
因此,事实证明,有一个正在导入的库具有一些绑定事件,这些事件会影响无线电的工作方式(正如Barmar所建议的)。我提出了两种可能的解决方案,都不好,但它们都有效。
解决方案1:为这些无线电添加一个空绑定事件。
$('input[name=radTotalHours]').change( function(){});
我认为,不知何故,这要么暂停了导入的事件,要么覆盖了它。我不确定是如何/为什么,但一旦代码到位,onchange就会突然正常工作。
解决方案2:为每个无线电添加一个与其值匹配的类。将this参数添加到onchange函数中,然后使用该类来确定使用执行哪个无线电函数调用
$(target).attr('class');
这两种解决方案都是完全愚蠢的,但在我工作的地方,这是常态。。。
不管怎样,谢谢你们的帮助。
相关文章:
- 多个单选按钮组相互干扰
- 是否可以禁用jquery中的单个单选按钮
- Javascript:无法获取变量中的单选按钮值
- 通过ajax到php文件获取单选按钮值
- 互斥单选按钮和相应的输入字段
- 用于选择MVC3中单选按钮值的JavaScript
- 如何获取单选按钮的多个实例的选定单选按钮值
- react testUtils模拟点击单选按钮而不触发onchange
- 当选择组中的单选按钮时,jQuery addClass
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- 客户端单选按钮列表验证
- Javascript:图像与单选按钮的值不匹配
- 如何在Javascript中将单选按钮值保存到cookie中
- 单选按钮的奇怪结果
- 将单选按钮结果与数组值进行比较时出现函数错误
- 如果我有两个选项的代码,单选按钮的结果将无法正常工作
- 如何从mysql中获取结果,并在单击单选按钮时使用jquery进行显示
- 在另一个结果中的单选按钮
- 根据单选按钮的选择显示不同的结果
- 根据TextArea值生成单选按钮结果