jQuery在输入元素后添加内容并删除添加的内容

时间:2010-07-02 06:13:25

标签: jquery

如果用户插入了非数字格式,我想在文本框后添加<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代码中有一些问题:

  1. 在非数字格式之后,会多次添加<em>;

  2. 如果用户输入的数字格式(也在其他文本框附近,页面中的所有<em>),将删除所有em标记

  3. 需要聪明的方法来执行此功能,没有问题[1]和[2]。 谢谢。

3 个答案:

答案 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的真正优势在于它的可插拔性,以及已经编写了如此多插件的事实。如果其他人已经发明了轮子,节省一些时间并使用他们的;)