我有一個jQuery的對話框,彈出並通過表單獲取用戶數據。一旦用戶完成了他/他點擊了「確定」按鈕。這個對話框有一些'選項卡',這樣當'ok'被點擊時,我們要驗證每個選項卡中給出的所有數據。如果有什麼是無效的,我們會將用戶帶到該選項卡,並告訴他們什麼是錯的。帶對話框的jQuery驗證
但是,需要2次點擊「確定」才能實現此目的。這裏是違規的jQuery:
if(errors){
// display the tab with the error
jQuery('#recording_tabs > div').each(function(i){
alert('we are here');
if(jQuery(this).find('*').not('label').hasClass('invalid')){
jQuery('#recording_tabs').tabs('option','selected', i);
return false;// prevent further processing
}
});
}
在上面的代碼那麼什麼情況是,當我們點擊「OK」我們得到了一個「我們在這裏」戒備每個DIV(標籤),然後什麼也沒有發生。點擊「確定」再次給我們'我們在這裏'警報,直到我們被帶到錯誤的標籤。
因此很明顯,第一次輪內部if語句對於每個選項卡都是false,這可能意味着jQuery沒有及時註冊「無效」類。所以我嘗試了一個空白的每個()語句,在主要之前,希望它能解決問題
jQuery('#recording_tabs > div').each(function(i){});
但我得到了同樣的結果。
任何人都可以發現我失蹤的任何東西嗎?
感謝您的回覆。看來我已經在使用invalidHandler
了。以下是完整的周圍的代碼(我沒有寫):
someForm.validate({
errorClass: "invalid",
invalidHandler : function(e, validator){
var errors = validator.numberOfInvalids();
var msg = jQuery("#message", someForm);
if(errors){
// display the tab with the error
jQuery('#recording_tabs > div').each(function(i){
if(jQuery('.invalid:not(label)', this).length){
jQuery('#recording_tabs').tabs('option','selected', i);
return false;// prevent further processing
}
});
}
else{
msg.hide();
}
},
rules: { ... //blah }
});
而且它通過被稱爲:
someDialog.dialog({
//... blah
buttons: {
'Cancel' : function(){
jQuery(this).dialog('close');
},
'Ok' : function(){
var valid = someForm.validate().form();
if(valid){
jQuery(this).dialog('close');
//....
}
}
}
});
我得到了同樣的問題。