我被困在一個問題,其中一個標誌沒有得到正確重置。驗證標誌失敗jquery
我有以下代碼。我正在編寫特定於IE8的代碼。在字段模糊時,它遍歷字段的類,如果任何類驗證返回false,則應顯示錯誤並設置爲flag4=false
。然後點擊提交按鈕,它需要檢查所有標誌是否爲真,如果是,則返回true。
但現在,on blur
正在發生。如果任何驗證失敗,則顯示錯誤,稍後如果我們將錯誤更改爲正確格式,則顯示爲綠色。但flag4
總是返回false
。由於它總是返回false,因此表單永遠不會成功提交,用戶也無法移動到下一頁。我的問題是,我應該在哪裏重置flag4
的值?
我已經嘗試了很多選項,但點擊按鈕失敗。一旦flag4=false
,即使正確地提供了所有字段後,它也不會變爲真。
var flag4 = true;
if(navigator.appVersion.indexOf("MSIE 8.0") != -1) {
var firsttime=false;
var validators = {
fn1: function(val) {
//return true or false;
},
fn2: function(val) {
//return true or false;
}
};
$('#submit_form :input').not('#id1,#id2,#id3').blur(function() {
var input = $(this);
var returnVal1 = true;
input.next('div.error_text').remove();
input.removeClass('highlight');
// Get all the classes of the current input
if(this.className) {
var classes = this.className.split(/\s+/);
for(var p in classes) {
if(classes[p] in validators) {
returnVal1 = returnVal1 && validators[classes[p]] (input.val());
}
}
}
if(returnVal1 == false) {
firsttime=true;
$(this).removeClass('green');
$(this).addClass('highlight');
var $msg = $(this).attr('title');
input.after('<div class="error_text">'+$msg+'/div>');
flag4 = false;
}
if(returnVal1 == true && firsttime == true) {
input.addClass('green');
}
});
}
$('#submitbtn').click(function() {
var flag1, flag2, flag3 = true;
if(flag1 && flag2 && flag3 && flag4) {
returnvalue = true;
} else{
returnvalue = false;
}
return returnvalue;
});
如果任何驗證當用戶進入第一次返回false,firsttime=true
。用戶第二次輸入正確的值時,該字段應變爲綠色。對於我使用if(returnVal1 == true && firsttime == true)
記錄你用console.log()得到的結果可能會產生一些影響 – Ashalynd
我試圖alert()。但是,一旦flag4 = false,即使正確給出所有字段後,它也不會變爲真。 – user1049057
你的代碼中'flag4'設置爲'true'的唯一地方就是聲明它的地方,而且這行只能執行一次。你需要在你的事件處理程序的某個地方將'flag4'設置回'true',但是如果你的模糊處理程序可以被調用多個元素,但只測試當前元素,那麼這些元素如何共享相同的標誌? – nnnnnn