2012-09-14 30 views
0

什麼是jquery實時驗證檢查的最佳方法?重新鍵入vars後替換跨文本(錯誤)jquery javascript

的onsubmit與每個標籤的跨度被改變,例如:

輸入你的郵箱|提交|電子郵件不正確

但是當您再次更改該值時,您必須再次提交以刪除電子郵件是不正確的消息。

所以即時搜索「實時」錯誤處理或什麼的。考慮我的代碼的最佳方法是什麼?

<script type="text/javascript"> 
    $(document).ready(function() 
    { 
     $('form #status').hide(); 
     $('#submit').click(function(e) { 
      e.preventDefault(); 

      var valid = ''; 
      var required = 'is required'; 
      var name = $('form #name').val(); 
      var subject = $('form #subject').val(); 
      var email = $('form #email').val(); 
      var message = $('form #message').val(); 
      var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-][email protected][a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/; 

      //error checking 
      if (name == '' || name.length <= 2) 
      { 
       valid = '<p>your name' + required + '</p>'; 
       $('form #nameInfo').text('Name can not contain 2 characters or less!'); 
      } 

      if(!filter.test(email)){ 
       valid += '<p>Your email'+ required +'</p>'; 
       $('form #emailInfo').text('Email addres is not valid'); 
      } 

      if (message == '' || message.length <= 5) 
      { 
       valid += '<p>A message' + required +'</p>'; 
       $('form #messageInfo').text('Message must be over 20 chars'); 
      } 

      if (valid != '') 
      { 
       $('form #status').removeClass().addClass('error') 
         .html('<strong>Please correct errors belown </strong>' + valid).fadeIn('fast') 
      } 
      else 
      { 
       $('form #status').removeClass().addClass('processing').html('Processing...').fadeIn('fast'); 
       var formData = $('form').serialize(); 
       submitForm(formData); 
      } 

     }); 
    }); 
    </script> 

回答

0

我不是100%確定我明白這個問題。用戶更正輸入時是否要重置#emailInfo文本?如果是這樣,你可以使用onchangeonkeypresfocus事件:

$("#email").change(function(){ 
    $("#nameInfo").text("Enter your email"); 
}); 

更重要的是,你可以做您的驗證上的相應字段change,而不是形式submit

下面的例子將驗證在每次按鍵電子郵件字段:

$("#email").keypress(function(){ 
    var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-][email protected][a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/; 
    var email = $('#email').val(); 

    if(!filter.test(email)){ 
     $('#emailInfo').text('Email addres is not valid'); 
    } else { 
     $('#emailInfo').text(''); 
    } 
}); 

您可以用類似的方式驗證等領域。或者你可以使用jQuery Validation插件。

+0

我的意思是實時驗證檢查。編輯問題抱歉 – r2get

+0

它的作品!謝謝.. – r2get

+0

當你填寫一個電子郵件有時你可以選擇從下拉菜單取決於最好的瀏覽器。或者有時你按ctrl + v它,儘管它沒有發生那麼多我仍然想知道如何在這些情況下改變它。如果我粘貼東西或從下拉列表中選擇它不起作用。瞄準完美:P – r2get