Asp.net 不允许使用jquery在所有输入文本框中键入少量字符,例如“”
我如何做到这一点:- 当用户为我的应用程序键入一个无效字符,如“abcd”和“>”时,我想将文本设置回“abcd”。如果我们可以像在winforms应用程序中那样取消输入本身,效果会更好。这应该发生在用户正在键入而不是单击按钮时 我想这是适用于我的网页中的所有文本框。如果解决方案是基于jQuery的,那么这将很容易。可能是这样开始的。 $input[type='text'] 解决方案 我使用了@jAndy和@Iacopo提供的两个答案抱歉,无法标记为以下两个答案Asp.net 不允许使用jquery在所有输入文本框中键入少量字符,例如“”,asp.net,javascript,jquery,webforms,Asp.net,Javascript,Jquery,Webforms,我如何做到这一点:- 当用户为我的应用程序键入一个无效字符,如“abcd”和“>”时,我想将文本设置回“abcd”。如果我们可以像在winforms应用程序中那样取消输入本身,效果会更好。这应该发生在用户正在键入而不是单击按钮时 我想这是适用于我的网页中的所有文本框。如果解决方案是基于jQuery的,那么这将很容易。可能是这样开始的。 $input[type='text'] 解决方案 我使用了@jAndy和@Iacopo提供的两个答案抱歉,无法标记为以下两个答案 $(document).read
$(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!=此.value.replace/[]/g,检查。还更新了解决方案
再次感谢所有的回答者 按键示例:
$(document).ready(function(){
$('input:text').bind('keypress', function(event){
if(event.which === 62 || event.which === 60)
return(false);
});
});
按键关闭示例:
$(document).ready(function(){
$('input:text').bind('keydown', function(event){
if(event.which === 226)
return(false);
});
});
只需对事件使用preventDefault和StopperPropagation函数。这些都是通过在事件处理程序中返回false触发的
在本例中,我只是检查同一个键上的keycode。如果我们点击该代码,我们只会阻止默认行为
参考:,按键示例:
$(document).ready(function(){
$('input:text').bind('keypress', function(event){
if(event.which === 62 || event.which === 60)
return(false);
});
});
按键关闭示例:
$(document).ready(function(){
$('input:text').bind('keydown', function(event){
if(event.which === 226)
return(false);
});
});
只需对事件使用preventDefault和StopperPropagation函数。这些都是通过在事件处理程序中返回false触发的
在本例中,我只是检查同一个键上的keycode。如果我们点击该代码,我们只会阻止默认行为
参考文献:
-更新-
用keyup代替keypress
-更新-
keyup而不是keypress您应该捕获“keyup”和“blur”事件,并将它们附加到一个用于bonified输入的函数:不要忘记用户可以粘贴无效的字符序列 比如说
$('input[type="text"]').keyup(purgeInvalidChars).blur(purgeInvalidChars)
function purgeInvalidChars()
{
this.value = this.value.replace(/[<>]/g, '');
}
当然,您将改进regexp,可能会替换除已启用字符以外的所有字符
很抱歉,我无法测试我的代码,因此您应该同时使用grano salis:-您应该捕获“keyup”和“blur”事件,并将它们附加到一个用于对输入进行bonified的函数:别忘了用户可以粘贴无效的字符序列 比如说
$('input[type="text"]').keyup(purgeInvalidChars).blur(purgeInvalidChars)
function purgeInvalidChars()
{
this.value = this.value.replace(/[<>]/g, '');
}
当然,您将改进regexp,可能会替换除已启用字符以外的所有字符
很抱歉,我无法测试我的代码,因此您应该同时测试grano salis:-不确定您测试的是什么,但这在Windows机器上根本不起作用,<的键代码是188和190 for>。另外,我使用的浏览器是chrome。@ryanulit:在chrome上使用winXP。对于keydown,我是226,这两个参数都是和keyCode。没有理由否决这个。这也不起作用,我可以输入字符。我正在使用win7@Ismail:尝试按键变体按键变体工作正常。:。非常感谢@jandy不确定您测试的是什么,但这在Windows机器上根本不起作用,<的键码是188和190 for>。另外,我使用的浏览器是chrome。@ryanulit:在chrome上使用winXP。对于keydown,我是226,这两个参数都是和keyCode。没有理由否决这个。这也不起作用,我可以输入字符。我正在使用win7@Ismail:尝试按键变体按键变体工作正常。:。非常感谢@jandy希望您已经意识到这一点,但请注意,客户端验证不会阻止用户使用“>”提交输入,因此您仍然需要在服务器端执行输入验证。谢谢!ASP.NET负责这项工作。它抛出了危险的输入异常,对我来说,它将重定向到自定义错误页面。记住,用户端输入验证永远不够。您应该始终在服务器端验证输入。希望您已经意识到这一点,但请注意,客户端验证不会阻止用户使用“>”提交输入,因此您仍然需要在服务器端执行输入验证。谢谢!ASP.NET负责这项工作。它抛出了危险的输入异常,对我来说,它将重定向到自定义错误页面。记住,用户端输入验证永远不够。您应该始终在服务器端验证输入。我不知道为什么这会被否决。这不是最有效的实现,但它是一个正确的解决方案。我看到了这个问题。你需要将它改为keyup而不是keypress。我不知道为什么这会被否决。这不是最有效的实现,但它是一个正确的解决方案。我看到了这个问题。您需要将其更改为keyup而不是keypress。@lacopo-这是可行的,只是您应该将g全局标识符添加到正则表达式中,以防有人复制/粘贴
不止一个无效字符。感谢您指出粘贴内容。我完全错过了它的工作,但用户无法选择文本框中的文本。有什么办法吗?是的,如果event.which不是一个真实的字符,即它是一个箭头或Home等,你应该避免替换文本。@lacopo-这很有效,除了你应该在正则表达式中添加g全局标识符,以防有人复制/粘贴一个以上的无效字符。谢谢你指出粘贴的事情。我完全错过了它的工作,但用户无法选择文本框中的文本。可以做些什么吗?是的,如果event.which不是一个真正的字符,即它是一个箭头或Home等,您应该避免替换文本。