[英]Disallow typing of few of characters e.g.'<', '>' in all input textboxes using jquery
我如何实现这一目标: -
当用户输入'abcd'
等字符然后'>'
(我的应用程序的字符无效)时,我想将文本设置回'abcd'
。 如果我们可以像在winforms应用程序中那样取消输入,那就更好了。 这应该在用户输入而不是单击按钮时发生。
我希望将其应用于我的网页中的所有文本框。 如果解决方案是基于jQuery的,这将很容易。 可能会像这样开始。
$("input[type='text']")
解
我使用了@jAndy和@Iacopo提供的答案(对不起,无法标记为两者的答案),如下所示。
$(document).ready(function() {
//makes sure that user cannot enter < or > 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);
});
});
只需对事件使用preventDefault
和stopPropagation
函数。 这些是通过在事件处理程序中返回( false
)来触发的。
在这个例子中,我只是检查<
和>
的密钥代码,幸好在同一个密钥上。 如果我们点击该代码,我们只是阻止默认行为。
$('#textBox').keyup(function(e){
var myText = $('#textBox').val();
myText = myText.replace(">", "");
myText = myText.replace("<", "");
$('#textBox').val(myText);
});
- 更新 -
keyup
而不是keypress
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.