2013-07-20 108 views
2

我驗證了我的表單中的一些字段..但是我有一些問題..如果沒有輸入字段,它會顯示錯誤消息..如果填寫字段仍顯示錯誤消息..必填字段驗證jquery顯示錯誤消息

如何擺放?

我的代碼

$("#Name").focus(); 
$("#Name").blur(function(){ 
    var name=$('#Name').val(); 
    if(name.length == 0){ 
     $('#Name').after('<div class="red">Name is Required</div>'); 
    } 
    else { 
    return true; 
    } 
}); 

    $("#Address").blur(function(){ 
    var address=$('#Address').val(); 
    if(address.length == 0){ 
     $('#Address').after('<div class="red">Address is Required</div>'); 
     return false; 
    } 
    else { 
    return true; 
    } 
}); 

誰能幫助我,請?????

+0

請讓小提琴 –

+0

什麼樣的信息錯誤的? –

回答

2

你應該刪除這個labe用戶輸入後LS一些數據

$("#Name").focus(); 
$("#Name").blur(function(){ 
    var name=$('#Name').val(); 
    if(name.length == 0){ 
     $('#Name').after('<div class="red">Name is Required</div>'); 
    } 
    else { 
     $('#Name').next(".red").remove(); // *** this line have been added *** 
     return true; 
    } 
}); 

    $("#Address").blur(function(){ 
    var address=$('#Address').val(); 
    if(address.length == 0){ 
     $('#Address').after('<div class="red">Address is Required</div>'); 
     return false; 
    } 
    else { 
     $('#Address').next(".red").remove(); // *** this line have been added *** 
     return true; 
    } 
}); 

的jsfiddle:DEMO

+1

這段代碼有一個bug。每次模糊時都會重複提醒,而不會刪除之前的提醒。 –

0

嘗試刪除else條件中添加的html。

if(name.length == 0){ 
     $('#Name').after('<div class="red">Name is Required</div>'); 
    } 
    else { 
    $('.red').empty(); //here 
    return true; 
    } 

與同爲$("#Address")

2

試試這個代碼(我只是改變了結構,並添加返回false):

$("#Name").focus() 

$("#Name, #Address").blur(function(){ 
    if($(this).val().length == 0){ 
     $(this).after('<div class="red">This field is required</div>'); 
    } else { 
     $(this).next('.red').remove() 
    } 
}); 

但我認爲最好的辦法是將required attribute添加到你的領域是這樣的:

<input type="text" name="name" required /> 
<input type="text" name="address" required /> 
+1

您的代碼可能無法正確使用'$(this).next()。remove()',這可能會導致字段地址被刪除 –

+0

是的,但我更新了我的代碼。我把'$(this).next('。red')。remove()' –

3

你的代碼有錯誤,它把DIV多達你在空文本模糊的時間。 此錯誤也被我的代碼見式刪除:

工作演示http://jsfiddle.net/XqXNT/

$(document).ready(function() { 
    $("#Name").focus(); 
    $("#Name").blur(function() { 
     var name = $('#Name').val(); 
     if (name.length == 0) { 
      $('#Name').next('div.red').remove(); 
      $('#Name').after('<div class="red">Name is Required</div>'); 
     } else { 
      $(this).next('div.red').remove(); 
      return true; 
     } 
    }); 

    $("#Address").blur(function() { 
     var address = $('#Address').val(); 
     if (address.length == 0) { 
      $('#Address').next('div.red').remove(); 
      $('#Address').after('<div class="red">Address is Required</div>'); 
      return false; 
     } else { 
      $('#Address').next('div.red').remove(); 
      return true; 
     } 
    }); 

}); 

它的更好,如果你使用所需的屬性,它確實用更少的代碼,更好的方式同樣的工作。

HTML5

<input type="text" name="name" required /> 
<input type="text" name="address" required />