2016-06-28 83 views
1

下面是一個HTML輸入表單上的腳本。我的問題是,當我第一次在輸入框中輸入某些東西時,我得到了錯誤的結果,但是當我再次關注該框(單擊輸入框中的內容),然後取消選擇輸入框時,我會得到正確的答案!爲什麼發生這種情況?解決辦法是什麼?的JavaScript輸入驗證不工作的第一次嘗試

<input type="email" id="iemail" name="email" class="form-control"></input> 
<script> 
    var pattern = /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i; 
    var userinput; 
    $("#iemail").focus(function(){ 
     userinput = $("#iemail").val(); 
    }); 
    $("#iemail").blur(function(){ 
     if(pattern.test(userinput)){ 
      alert("VALID"); 
     }else{ 
      alert("not a valid e-mail address"); 
     } 
    }); 
</script> 

任何人都可以請幫助我。我真的很感激......

回答

1

這是因爲你在focus事件的字段值分配給userInput ,這是第一次focus被觸發,當該字段爲空,將意味着userInput被設置爲空值。

你可以的userInput分配移動到blur事件來代替。

var pattern = /^[a-zA-Z0-9._-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i; 
$("#iemail").blur(function(){ 
    var userinput = $("#iemail").val(); 

    if(pattern.test(userinput)){ 
     alert("VALID"); 
    }else{ 
     alert("not a valid e-mail address"); 
    } 
}); 
+0

對不起,並不意味着編輯您的帖子。我以爲我在編輯我的內容,讓我的內容更加清晰。我回滾了編輯。 –

+0

@JeremyHarris無後顧之憂。你可以不編輯嗎? – glcheetham

+0

謝謝glcheetham – zigzag

0

刪除此:

$("#iemail").focus(function(){ 
     userinput = $("#iemail").val(); 
    }); 

變模糊到:

$("#iemail").blur(function(){ 
     userinput = $("#iemail").val(); 
     if(pattern.test(userinput)){ 
      alert("VALID"); 
     }else{ 
      alert("not a valid e-mail address"); 
     } 
    }); 
0

原因是因爲您正在全局存儲值#iemail焦點。 第一個它關注的時間,它全局存儲一個空字符串,因爲你還沒有輸入任何東西。當模糊時,它會檢查空的全局字符串。第二次關注時,它現在在文本框中有一個值並存儲它。

無需單獨做這些事情。

$("#iemail").blur(function(){ 
    var userinput = $("#iemail").val(); 
    if(pattern.test(userinput)){ 
     alert("VALID"); 
    }else{ 
     alert("not a valid e-mail address"); 
    } 
}); 
+0

謝謝你傑里米哈里斯 – zigzag