У меня есть html-код ниже, который генерирует 2 раскрывающихся списка. Среда установки - Netbeans 7.3 с интеграцией Chrome. JQuery 2.0.3 добавлен к пути в Netbeans.Отключить элементы формы на основе условия выпадающего списка
<div class="patientHealthInsurance">
<label class="fonttype">Health Insurance:</label><br>
<label class="fonttype">Card:</label>
<select name="card" id="card">
<option value="Y">Y</option>
<option value="N">N</option>
</select>
<label class="fonttype">Card Type:</label>
<select name="cardtype" id="cardtype">
<option value="MBF">MBF</option>
<option value="NIB">NIB</option>
<option value="HCF">HCF</option>
</select>
<label class="fonttype">Card Number:</label>
<input type="text" name="insurancecardnumber"id="insurancecardnumber"/>
<label class="fonttype">Card Expiry Date:</label>
<input type="date" name="cardexpiry" id="cardexpiry"/>
</div>
<div class="patientPension">
<label class="fonttype">Pension:</label><br>
<label class="fonttype">Card:</label>
<select name="pensioncard" id="pensioncard">
<option value="Y">Y</option>
<option value="N">N</option>
</select>
<label class="fonttype">Pension Card Number:</label>
<input type="text" name="pensioncardnumber" id="pensioncardnumber"/>
<label class="fonttype">Card Expiry Date:</label>
<input type="date" name="pensioncardexpiry" id="pensioncardexpiry"/>
</div>
У меня также есть jquery/javascript, который добавляет немного динамики в html выше. Если я выберу значение «N» в раскрывающемся списке карты, необходимо отключить типы карточек, cardexpiry и insurancecardnumber. Если я выберу значение «Y», они должны включить.
Если я также выберем «N» из раскрывающегося списка пенсионных карт, эффект должен быть таким же, как указано выше, только в этом случае элементы пенсионной карточки и пенсионного карточного диска должны быть отключены. Если я выберем «Y», тогда они должны включить.
Мой Jquery/Javascript следует ...
$(document).ready(function(){
$("select").change(function(){
if ($("#card").val("N")){
$("#cardtype").attr("disabled",true);
$("#insurancecardnumber").attr("disabled",true);
$("#cardexpiry").attr("disabled",true);
}
else if($("#card").val("Y")){
$("#cardtype").attr("disabled",false);
$("#insurancecardnumber").attr("disabled",false);
$("#cardexpiry").attr("disabled",false);
}
if ($("#pensioncard").val("N")){
$("#pensioncardnumber").attr("disabled",true);
$("#pensioncardexpiry").attr("disabled",true);
}
else if($("pensioncard").val("Y")){
$("pensioncardnumber").attr("disabled",false);
$("pensioncardexpiry").attr("disabled",false);
}
});
});
Результат довольно неожиданный. Если я выберу «N» в раскрывающемся списке карты, это отключит тип карты, номер страховой карточки, элементы кард-экспириума, как и ожидалось, однако это также отключает элементы пенсионной карты и элементы пенсионного карточного диска. Он также изменяет значение от «Y» до «N» выпадающего списка пенсионных карт. Если я изменю значение на «N» в раскрывающемся списке пенсионных карточек, это отключит элементы пенсионной карточки и пенсионного фона, как и ожидалось, но также отключит элементы карточного типа, cardexpiry и insurancecardnumber. Я не могу правильно понять эту логику.
Еще одна двусмысленность заключается в том, что если я попытаюсь вручную изменить значение обоих выпадающих списков на «Y» в хроме, значение всегда будет по умолчанию «N».
Таким образом, при выборе «N» в выпадающем списке отключены все 5 элементов, и изменение «N» на «Y» вручную не может произойти, поскольку по умолчанию оно равно «N».
Любые идеи?