【发布时间】:2014-03-24 15:26:03
【问题描述】:
给定以下代码(是的,我知道它在 yii 中可能无关紧要,但我添加了标签,所以我用实际生成的 html 更新了问题):
<script>
$(function(){
$('#widgetId-form input[name="valueType"]').change(function(){
if ($(this).is(":checked"))
{
console.log("habilitando "+$(this).data("class"));
$("."+$(this).data("class")).prop("disabled", false);
}
else
{
console.log("deshabilitando "+$(this).data("class"));
$("."+$(this).data("class")).prop("disabled", true);
}
}).change();
});
</script>
<div id="widgetId-dialog">
<form id="widgetId-form" action="/support/test" method="post">
<div>
<input id="valueType-single" value="single" data-class="singleValueField" checked="checked" type="radio" name="valueType" />
<label for="single">Valor simple</label>
<input size="6" class="singleValueField" type="text" value="" name="singleValue" id="singleValue" />
</div>
<div>
<input id="valueType-range" value="range" data-class="rangeValueField" type="radio" name="valueType" />
<label for="range">Rango (inicio:fin:intervalo)</label>
<input size="6" class="rangeValueField" type="text" value="" name="rangeValue_start" id="rangeValue_start" />:<input size="6" class="rangeValueField" type="text" value="" name="rangeValue_end" id="rangeValue_end" />:<input size="6" class="rangeValueField" type="text" value="" name="rangeValue_interval" id="rangeValue_interval" />
</div>
</form>
</div>
当收音机未被选中时,它不会触发 change()。这意味着:仅在初始化 (.ready()) 时禁用控件。 change() 不会由失去复选标记的控件单独触发。
问题:如何检测单选按钮何时丢失复选标记?
【问题讨论】:
-
您是否尝试将 on 附加到 "widgetId-dialog" ? api.jquery.com/on
$("#widgetId-dialog").on('change', 'input[name="valueType"]', function() ...... -
可能是一个愚蠢的问题,但代码是写的吗?就目前而言,javascript 可以在绘制 HTML 之前执行。尝试将其包装在
$( document ).ready() -
@stakolee
$(function(){==$(document).ready()..同样的事情 -
来自 jquery doc:“此方法是前两个变体中 .on( "change", handler ) 和第三个变体中 .trigger( "change" ) 的快捷方式。"
-
您是否使用任何 jquery 插件来自定义您的单选按钮,或直接单击本机输入之外的任何间接更改单选按钮的状态。因为在这种情况下,收音机更改功能不会触发,您必须手动触发它。
标签: javascript jquery html yii