【问题标题】:Trim input field value to only alphanumeric characters/separate spaces with . with jQuery使用 . 将输入字段值修剪为仅字母数字字符/分隔空格。用 jQuery
【发布时间】:2011-10-08 03:26:40
【问题描述】:

所以我试图有一个输入字段,我可以在其中输入任何字符,然后将输入的值小写,删除所有非字母数字字符,留下“。”而不是空格。

例如,如果我输入:
地球是 70% 的水,-!*#$^^ & 30% 土地

输出应该是:
earth.is.70.water.30.land

知道如何在不使用 jQuery 屏蔽的情况下做到这一点吗?

【问题讨论】:

    标签: jquery regex character trim alphanumeric


    【解决方案1】:

    这不是一个真正的 jQuery 问题,它可以用简单的 Javascript 来完成。首先您需要将文本小写,然后用句点替换空格,然后删除非字母数字:

    var myStr = "Earth is 70% water, -!*#$^^ & 30% LAnd"
    myStr=myStr.toLowerCase();
    myStr=myStr.replace(/ /g,".");
    myStr=myStr.replace(/[^a-zA-Z0-9\.]+/g,"");
    

    当用户输入时,此答案会留下多个空格作为句点。如果您希望它与您的答案匹配(实际上将多个空格压缩为一个),请添加一个额外的替换:

    myStr=myStr.replace(/\.+/g, ".");
    

    【讨论】:

      【解决方案2】:
      $(document).ready(function () {
              $(".ui-widget-content .ui-autocomplete-input").keydown(function (event) {
      
      
                  if (event.shiftKey) {
                      return false;
                  }
                                  if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 97 && event.keyCode <= 122) || (event.keyCode >= 65 && event.keyCode <= 90)) 
                                  {
                                      return true;
                                  }
                                  else {
                                      return false;
                                  }
              });
          });
      

      【讨论】:

        【解决方案3】:

        绑定到keyPress 事件并取消非字母数字字符。

        示例代码:

        $("#target").keypress(function(event) { 
            var key = event.which;
            var keychar = String.fromCharCode(key).toLowerCase();
            // allow control keys
            if ((key==null) || (key==0) || (key==8) || 
                (key==9) || (key==13) || (key==27) )
                 return true;
        
            if ((("abcdefghijklmnopqrstuvwxyz0123456789").indexOf(keychar) == -1)) 
               event.preventDefault();   
               return false;
            }   
        });
        

        【讨论】:

        • 在这种情况下#target 应该是输入字段吗?我正在尝试仅使用任何字符的值并在有意义的情况下对其进行清理
        • 是的。如果您只想清理值,请使用@Nguyen 的正则表达式替换方法。
        • 是的,Nguyen 的正则表达式完美无瑕:) 使用您的屏蔽方法,如果值是复制/粘贴而不是键入/按键输入会怎样?
        • 复制粘贴也可以通过 bindimg to 'paste' 事件处理。
        • 取消键的缺点是它有时会混淆您网页的用户,他们认为输入字段已损坏。
        猜你喜欢
        • 1970-01-01
        • 2022-01-07
        • 1970-01-01
        • 2015-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-26
        相关资源
        最近更新 更多