限制用户在动态生成的文本框中输入特定字符

时间:2014-05-29 04:45:14

标签: javascript jquery asp.net

我试图阻止用户在页面上的任何文本框中输入两个特定字符。我正在使用的代码不适用于动态附加的文本框。

DEMO

  window.onload = function () {
            $("input").keypress(function (e) {
                if (e.which === 44 || e.which === 124) {//preventing , and |
                    e.preventDefault();
                }
            });
}

由于我没有使用服务器控件,我不能使用ajax过滤器等。我想有一个简单的解决方案。不会在代码中造成任何冲突。谢谢。

3 个答案:

答案 0 :(得分:3)

尝试在此上下文中使用event-delegation,因为您需要绑定在运行时追加的元素的事件。

 $(document).on('keypress',"input",function (e) {
       if (e.which === 44 || e.which === 124) {
            e.preventDefault();
       }
 });

旁注:我只是使用document来委派事件,但您应该使用任何最接近的静态父级来输入元素,以获得性能提升。< / p>

答案 1 :(得分:1)

使用事件委托来动态创建dom

$(document).on("keypress","input",function (e) {
                if (e.which === 44 || e.which === 124) {
                    e.preventDefault();
                }
            });

document使用直接父选择器,它在html中是静态的

答案 2 :(得分:0)

演示:http://jsfiddle.net/4v78q/

http://jsfiddle.net/4v78q/1/

$(document).ready(function(){
    $("input").each(function(){
        $(this).keypress(function(e){
            var keycode = e.which || e.keyCode; 
             if (keycode === 44 || keycode === 124) {
                 e.preventDefault();
             }
        });
    });
});