禁用输入空间,并允许返回箭头?禁用输入空间,并允许返回箭头?(Disable spaces in I

2019-05-12 02:37发布

我试图禁止在用户名文本字段中的空间,但我的代码禁用使用后退箭头了。 任何方式允许后退箭头也?

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

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

Answer 1:

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

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

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



Answer 2:

它没有“禁用”后退箭头 - 你的代码保持彻底更换所有的文本,只要你按一个键,每一个发生在插入符位置数据会丢失。

根本就没有做到这一点。

使用更好的机制,禁止空间,比如返回false从onkeydown事件处理程序时按下的键是space

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

这样一来,你的文本框是从在第一时间接收的空间禁止,你不需要更换任何文本。 因此,光标将不受影响。


更新

@VisioN的适应代码也将加入这个空间,禁止支持复制粘贴操作,同时还避免文本替换-ON- 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.
    });​​​​​
});


Answer 3:

请检查在你的函数正确的键码:

$(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);
});

这样,仅keyCode32 (空格)调用替换功能。 这将允许其他keypress事件打通。 根据在IE可比性,你可能需要检查是否e存在,则使用e.which ,或者使用全局window.event对象。 有在这里,虽然涉及的主题很多问题。

如果你不确定某个keyCode试试这个有帮助的网站 。



文章来源: Disable spaces in Input, AND allow back arrow?