2017-08-24 205 views
0

我是新來的jquery。我想在條目不是數字時顯示錯誤消息。這裏的問題是,當用戶刪除輸入並正確寫入一個數字時,錯誤信息仍然會出現。 我該如何解決這個問題?jquery:驗證後隱藏錯誤消息

$("#SpecCode").mousedown(function() { 
    specialismCode=$(this).val(); 
    if (!$.isNumeric(specialismCode) || specialismCode.length !=''){ 
     $("#SpecCode").parent().after('<span class="validation">Please enter correct input</span>'); 
     } 

     }); 
+0

爲什麼一個長度永遠是等於' '''(字符串)? – WillardSolutions

+0

如果不是,則在用戶觸摸鍵盤之前將出現錯誤消息 – Hamdy

+0

'.length'返回一個數字。如果沒有長度,則返回'0'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length – WillardSolutions

回答

1

答案更新

如果需要顯示/隱藏驗證消息,你可以直接將它添加到HTML片段,並使用.toggle(true/false)

$("#SpecCode").on('input', function(e) { 
 
    var specialismCode = $(this).val(); 
 
    var nextele = $(this).next('span'); 
 
    nextele.toggle(!$.isNumeric(specialismCode) || specialismCode.length == 0); 
 
}).trigger('input');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<form> 
 
    <label for="SpecCode">Number: 
 
     <input type="text" id="SpecCode"><span class="validation">Please enter correct input</span> 
 
    </label> 
 
</form>

你在你的代碼中的一些問題。

相反的:

specialismCode.length !='' 

你可以使用:

specialismCode.length == 0 

而不是鼠標按下可以使用輸入

最後,錯誤消息出現在輸入字段之後。因此,您可以使用:

$(this).next('span') 

爲了選擇錯誤消息。

的片段:

$("#SpecCode").on('input', function(e) { 
 
    var specialismCode = $(this).val(); 
 
    var nextele = $(this).next('span'); 
 
    if (!$.isNumeric(specialismCode) || specialismCode.length == 0) { 
 
     $(this).after(function(idx, txt) { 
 
      return (nextele.length == 0) ? '<span class="validation">Please enter correct input</span>' : ''; 
 
     }); 
 
    } else { 
 
     nextele.remove(); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
    <label for="SpecCode">Number: 
 
     <input type="text" id="SpecCode"> 
 
    </label> 
 
</form>

+0

謝謝,它的工作原理。顯然,我需要花更多時間在jquery上來完美地學習它。 – Hamdy

+0

不客氣 – gaetanoM