Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 不允许使用jquery在所有输入文本框中键入少量字符,例如“”_Asp.net_Javascript_Jquery_Webforms - Fatal编程技术网

Asp.net 不允许使用jquery在所有输入文本框中键入少量字符,例如“”

Asp.net 不允许使用jquery在所有输入文本框中键入少量字符,例如“”,asp.net,javascript,jquery,webforms,Asp.net,Javascript,Jquery,Webforms,我如何做到这一点:- 当用户为我的应用程序键入一个无效字符,如“abcd”和“>”时,我想将文本设置回“abcd”。如果我们可以像在winforms应用程序中那样取消输入本身,效果会更好。这应该发生在用户正在键入而不是单击按钮时 我想这是适用于我的网页中的所有文本框。如果解决方案是基于jQuery的,那么这将很容易。可能是这样开始的。 $input[type='text'] 解决方案 我使用了@jAndy和@Iacopo提供的两个答案抱歉,无法标记为以下两个答案 $(document).read

我如何做到这一点:- 当用户为我的应用程序键入一个无效字符,如“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!=此.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等,您应该避免替换文本。