【问题标题】:jquery change() works only once in a formjquery change() 在表单中只工作一次
【发布时间】:2017-11-24 20:34:09
【问题描述】:
我有一个关于 jQuery 的小脚本问题。我试图制作一个带有 2 个单选按钮和一个选择列表的表单。我希望如果用户单击列表,它将检查“电子邮件”,并且如果用户单击收音机“livredor”,则应检查收音机,我需要将其设为“自动检查”。
此代码仅适用一次。如果单选按钮被点击,它就会卡住。
$("#destinataires").change(function() {
$('input[type=radio][name=choix][value=email]').attr('checked', true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<INPUT id="emailchoix" name="choix" type="radio" value="email">
<SELECT id="destinataires" name="contact" size="1">
<option value="etienne">Étienne</option>
<option value="michele">Michèle</option>
<option value="thomas">Thomas</option>
<option value="filou">Filou</option>
<option value="mustapha">Mustapha</option>
</SELECT>
<INPUT id="livrechoix" type="radio" name="choix" value="livredor"> Livredor
【问题讨论】:
标签:
jquery
forms
list
radio
【解决方案1】:
我建议使用 jQuery 的 prop() 来设置选中状态,而不是 attr()。
根据prop()的文档:
属性通常会影响 DOM 元素的动态状态,而无需
更改序列化的 HTML 属性。示例包括值
输入元素的属性,输入的禁用属性和
按钮,或复选框的选中属性。 .prop() 方法
应该用于设置禁用和检查而不是 .attr()
方法。
$("#destinataires").change(function() {
$('input[type=radio][name=choix][value=email]').prop('checked', true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="emailchoix" name="choix" type="radio" value="email">
<select id="destinataires" name="contact" size="1">
<option value="etienne">Étienne</option>
<option value="michele">Michèle</option>
<option value="thomas">Thomas</option>
<option value="filou">Filou</option>
<option value="mustapha">Mustapha</option>
</select>
<input id="livrechoix" type="radio" name="choix" value="livredor" checked> Livredor
如需更多技术解释,请参阅.prop() vs .attr()。