禁止在所有输入文本框中使用jquery键入少量字符,例如“”

我如何实现这一目标: –
当用户输入'abcd'等字符然后'>' (我的应用程序的字符无效)时,我想将文本设置回'abcd' 。 如果我们可以像在winforms应用程序中那样取消输入,那就更好了。 这应该在用户键入而不是单击按钮时发生。

我希望将其应用于我的网页中的所有文本框。 如果解决方案是基于jQuery的,这将很容易。 可能会像这样开始。
$("input[type='text']")


我使用了@jAndy和@Iacopo提供的答案(对不起,无法标记为两者的答案),如下所示。

 $(document).ready(function() { //makes sure that user cannot enter  sign in text boxes. $("input:text").keyup(purgeInvalidChars) .blur(purgeInvalidChars) .bind('keypress', function(event) { if (event.which === 62 || event.which === 60) return (false); }); function purgeInvalidChars() { if (this.value != this.value.replace(/[]/g, '')) { this.value = this.value.replace(/[]/g, ''); } } }); 

虽然仍然存在一个问题,即它不允许用户在文本框中选择文本,这只发生在Chrome上,在IE上工作正常(第一次:D),没有在firefox上测试过。 如果有人能找到解决方案或者希望谷歌人解决它,那将是很高兴的:D。

UPDATE
我通过if (this.value != this.value.replace(/[]/g, ''))检查解决了它。 还更新了解决方案

再次感谢所有的回答者。

您应该捕获’keyup’和’blur’事件并将它们附加到一个使输入合并的函数:不要忘记用户可以粘贴无效的字符序列。

所以举个例子

 $('input[type="text"]').keyup(purgeInvalidChars).blur(purgeInvalidChars) function purgeInvalidChars() { this.value = this.value.replace(/[<>]/g, ''); } 

当然你会改进正则表达式,可能会替换所有字符,除了启用的字符。

对不起,我无法测试我的代码,所以你应该把它暨grano salis 🙂

示例(按键):

 $(document).ready(function(){ $('input:text').bind('keypress', function(event){ if(event.which === 62 || event.which === 60) return(false); }); });​ 

示例(keydown):

 $(document).ready(function(){ $('input:text').bind('keydown', function(event){ if(event.which === 226) return(false); }); });​ 

只需对事件使用preventDefaultstopPropagation函数。 这些是通过在事件处理程序中返回( false )来触发的。

在这个例子中,我只是检查<>的密钥代码,谢天谢地,在同一个密钥上。 如果我们点击该代码,我们只是阻止默认行为。

参考 : .preventDefault() ,. stopPropagation()

 $('#textBox').keyup(function(e){ var myText = $('#textBox').val(); myText = myText.replace(">", ""); myText = myText.replace("<", ""); $('#textBox').val(myText); }); 

- 更新 -

keyup而不是keypress