近日做一個關於JQuery表單驗證,有一個比較奇葩的要求,即checkbox是為必填項,textbox不是必填的。
而checkbox與textbox又是相關的,填寫了textbox,則其上方的checkbox即相當於勾選。在使用中,用戶很容易只注意到textbox,忽視checkbox,而不勾選,造成驗證不通過。
所以想通過程序,在驗證之前先判斷textbox是否有值,如果有值,則自動勾選checkbox,再進行驗證。

最初的代碼如下:
if ($("#ZYAreaBC").val() != null) { if ($("#ZYAreaBC").val() != "") { $("#ChkSYBC").attr("checked", true); } } if ($("#ZYElseBC").val() != null) { if ($("#ZYElseBC").val() != "") { $("#ChkHBBC").attr("checked", true); } }
調試過程中,出現很奇怪的異常,該項不一定通過驗證,且checkbox的狀態一直是未選中的狀態。但是再調試過程中查看checkbox的值,是有值的。
本以為是JQuery無法驗證通過代碼設置的值,再谷歌不正常的情況下到處找資料,終於發現是checkbox設置值的問題,JQuery1.6之后,使用如下代碼設置
checkbox的的選中與否
$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);
參考如下帖子:http://stackoverflow.com/questions/426258/checking-a-checkbox-with-jquery
修改代碼,修改后調試正常通過
if ($("#ZYAreaBC").val() != null) { if ($("#ZYAreaBC").val() != "") { $("#ChkSYBC").prop('checked', true); ; } } if ($("#ZYElseBC").val() != null) { if ($("#ZYElseBC").val() != "") { $("#ChkHBBC").prop('checked', true); ; } }
