jquery change()只在表单中工作一次

时间:2017-06-21 19:18:33

标签: jquery forms list radio

我有一个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

1 个答案:

答案 0 :(得分:0)

我建议使用jQuery的prop()来设置检查状态,而不是attr()
根据{{​​3}}的文档:

  

属性通常会影响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()