【发布时间】:2010-06-16 13:14:53
【问题描述】:
我如何做到这一点:-
当用户键入'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。
更新
我通过if (this.value != this.value.replace(/[<>]/g, ''))检查解决了它。还更新了解决方案。
再次感谢所有回答者。
【问题讨论】:
-
希望您已经意识到这一点,但请注意,客户端验证不会阻止用户使用“>”提交输入,因此您仍然需要在服务器端执行输入验证。
-
感谢大脑! ASP.NET 负责处理它。它会引发危险的输入异常,对我来说它将重定向到自定义错误页面。
-
请记住,用户端输入验证永远不够。您应该始终在服务器端验证输入。
标签: asp.net javascript jquery webforms