2017-06-21 63 views
0

jQuery有一個小腳本問題。我試圖製作一個帶有2個單選按鈕和一個選擇列表的表單。我希望如果用戶點擊列表,它將檢查「電子郵件」,並且如果用戶點擊收音機「livredor」,收音機應該被檢查,我需要使它「自動檢測」。jquery change()只能在表單中工作一次

此代碼僅適用於一次。如果單選按鈕被點擊,它會卡住。

$("#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

回答

0

我建議使用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()