2014-02-19 136 views
0

我使用以下函数停止在文本框中允许使用文本和特殊字符。但是,如果我复制像“aa2ss”这样的文本。它将允许原样。如果我复制粘贴意味着我不想允许文本,字符串中的特殊字符只允许在此文本框中的字符串中的数字。我怎样才能做到这一点?jquery验证功能不起作用

 $("input[name$='inputid']").bind('keypress keyup', 
      function(){ 
       $(this).val($(this).val.replace(/[^0-9]+$/i,'')); 
      } 
    ); 
+0

挺住......所以你的解决办法是简单地剥离一切,这是不是一个数字 - 止跌那你有没有完全没有意义的数据?为什么不验证它是数字 - 如果没有,然后将错误提交给用户? – Trent

+0

这是因为您使用的是按键。这只会使用按键。尝试在文本输入中使用onblur,然后在onblur –

+0

内写入上述函数,您可以使用[input}(https://developer.mozilla)。 org/en-US/docs/Web/Reference/Events/input)事件也是 –

回答

0

你需要你的函数绑定到jquery.blur() event

$("input[name$='inputid']").blur(function(){ 
     $(this).val($(this).val().replace(/[^0-9]+$/i,'')); 
    }); 
+0

不,它不工作 – User

+0

@User-尝试修复错字“val.replace”应该是“val()。replace” – JBCP

0

如果您wan't每当用户粘贴(而不是打字)文本到您的输入元件能够运行同样的逻辑,您只需将paste事件添加到您现有的事件处理程序。

但首先,你必须有点错字:

...$(this).val.replace... 

应该是:

...$(this).val().replace... 

而且你还需要改变你的regex赶不定位在非数字字符字符串末尾从:

/[^0-9]+$/i 

至:

/[^0-9]+/i . 

因此最终的代码应该是:

$("input[name$='inputid']").bind('keypress keyup paste',function(){ 
    $(this).val($(this).val().replace(/[^0-9]+/i,'')); 
}); 

的演示的jsfiddle:http://jsfiddle.net/hjehR/