如果用户插入了非数字格式,我想在文本框后添加<em>
标记。
$('.numeric').keypress(function (e) {
var key_code = e.which;
if (key_code != 8 && key_code != 0 && (key_code < 48 || key_code > 57)) {
$(this).after("<em>type only numeric formatted text<em>");
return false ;
}
else {
$('em').remove();
}
});
不止一个文本框。 HTML代码:
<div>
<label for="Area">Full Area:</label>
<input type="text" value="" name="FullArea" id="FullArea" class="numeric">
</div>
在我的jQuery代码中有一些问题:
在非数字格式之后,会多次添加<em>
;
如果用户输入的数字格式(也在其他文本框附近,页面中的所有<em>
),将删除所有em
标记
需要聪明的方法来执行此功能,没有问题[1]和[2]。 谢谢。
答案 0 :(得分:2)
我建议隐藏并显示,...它比删除和再次添加要便宜得多......
试试这个demo
var em = $("<em>type only numeric formatted text<em>").hide();
$('.numeric').keypress(function (e) {
var key_code = e.which;
if (key_code != 8 && key_code != 0 && (key_code < 48 || key_code > 57)) {
$(this).next("em").show();
return false ;
}
else {
$(this).next("em").hide();
}
}).after(em);
答案 1 :(得分:1)
试试这个:
('.numeric').keypress(function (e) {
var next = $(this).next('em');
var key_code = e.which;
if (key_code != 8 && key_code != 0 && (key_code < 48 || key_code > 57)) {
if (next.length == 0)
$(this).after("<em>type only numeric formatted text<em>");
return false ;
}
else {
next.remove();
}
});
答案 2 :(得分:0)
请看一下jQuery Validation Plugin,它将为您做到这一点(还有更多!)。
jQuery的真正优势在于它的可插拔性,以及已经编写了如此多插件的事实。如果其他人已经发明了轮子,节省一些时间并使用他们的;)