禁用输入中的空格,并允许返回箭头



我试图禁用用户名文本字段中的空格,但是我的代码禁用使用后箭头。有什么方法可以允许反向箭头吗?

    $(function() {
         var txt = $("input#UserName");
         var func = function() {
                      txt.val(txt.val().replace(/s/g, ''));
                   }
         txt.keyup(func).blur(func);
    });

小提琴:http://jsfiddle.net/EJFbt/

您可以添加keydown处理程序并防止空格键(即32)的默认操作:

$("input#UserName").on({
  keydown: function(e) {
    if (e.which === 32)
      return false;
  },
  change: function() {
    this.value = this.value.replace(/s/g, "");
  }
});
演示:

http://jsfiddle.net/EJFbt/1/

这似乎对我有用:

<input type="text" onkeypress="return event.charCode != 32">

它不会"禁用"反向箭头—无论何时按下一个键,您的代码都会直接替换所有的文本,并且每次发生这种情况时,插入符号位置都会丢失。

千万别那样做。

使用更好的机制来禁止空格,例如当按下的键是space时,从onkeydown处理程序返回false:

$(function() {
    $("input#Username").on("keydown", function (e) {
        return e.which !== 32;
    });​​​​​
});

这样,你的文本框一开始就被禁止接收空格,你不需要替换任何文本。因此,插入符号将不受影响。


更新

@VisioN的改编代码也将为复制粘贴操作添加这种禁止空格的支持,同时仍然避免文本替换- keyup处理程序影响您的文本框值,而您的插入符号仍然在其中活动。

最后的代码是:

$(function() {
    // "Ban" spaces in username field
    $("input#Username").on({
       // When a new character was typed in
       keydown: function(e) {
          // 32 - ASCII for Space;
          // `return false` cancels the keypress
          if (e.which === 32)
             return false;
       },
       // When spaces managed to "sneak in" via copy/paste
       change: function() {
          // Regex-remove all spaces in the final value
          this.value = this.value.replace(/s/g, "");
       }
       // Notice: value replacement only in events
       //  that already involve the textbox losing
       //  losing focus, else caret position gets
       //  mangled.
    });​​​​​
});

尝试检查函数中正确的键代码:

$(function(){
    var txt = $("input#UserName");
    var func = function(e) {
      if(e.keyCode === 32){
        txt.val(txt.val().replace(/s/g, ''));
      }
    }
    txt.keyup(func).blur(func);
});

这样,只有32keyCode(空格)调用replace函数。这将允许其他keypress事件通过。根据IE中的可比性,您可能需要检查e是否存在,使用e.which,或者可能使用全局窗口。事件对象。这里有很多问题都涉及到这些话题。

如果您不确定某个keyCode,请尝试这个有用的网站

一行:

onkeypress="return event.which != 32"

相关内容

  • 没有找到相关文章

最新更新