2010-07-02 151 views
1

如果用戶插入非數字格式,我想在文本框後添加<em>標籤。jQuery添加輸入元素後的內容並刪除添加的內容

$('.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(); 
} 
}); 

Textboxes more than one。 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頁)

需要聰明的方式做到這一點功能,而問題[1] [2 ]。 謝謝。

回答

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); 
+0

@loviji - 是的...它仍然按預期工作...比添加刪除方式便宜...請參閱演示。 .. – Reigel 2010-07-02 06:29:50

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(); 
} 
}); 
+0

謝謝,Graphain – loviji 2010-07-02 06:34:13

0

看看jQuery Validation Plugin,它會爲你做這件事(還有更多!)。

jQuery的真正優勢在於它的可插入性,以及這麼多插件已經寫好。如果別人已經發明瞭車輪,請節省一些時間並使用它們;)