我是jquery的新手。我想在条目不是数字时显示错误消息。当用户删除输入并正确写入数字时,此处出现问题,仍会显示错误消息。 我怎么能解决这个问题?
$("#SpecCode").mousedown( function() {
specialismCode=$(this).val();
if (!$.isNumeric(specialismCode) || specialismCode.length !=''){
$("#SpecCode").parent().after('<span class="validation">Please enter correct input</span>');
}
});
答案 0 :(得分: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
您可以使用输入代替 mousedown 。
最后,错误消息出现在输入字段之后。所以,你可以使用:
$(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>