javascript - 如果多于 x 个字符则屏蔽

标签 javascript html

我正在使用一个屏蔽插件 ( http://digitalbush.com/projects/masked-input-plugin/ ) 它可以工作,但我试图让它只在文本框中有 5 个以上字符时才工作。每当我点击第 6 个字符时,它就会清除文本框并且不再接受输入。

JS:

  <script>
  function convert(){
    if (l.length > 5){
        $("#q").mask('(999) 999-9999');
    }
  }
  </script>

HTML:

<form action="search.php" method="GET">
<input type="tel" class="form-control" name="q" id="q" placeholder="Phone/Order Number" onkeyup="convert()"><br>
<button type="submit" class="btn btn-default">Search</button>
</form>

如果有人可以帮助我,那就太好了。 :D

最佳答案

它会清除文本框,因为当您应用 mask 时,插件会清除输入。您可以通过传递 autoclear 选项并将其设置为 false 来解决这个问题。它还会不断尝试应用掩码,因此您必须删除事件监听器。所以放弃内联事件处理程序,无论如何,这都是执行事件处理程序的糟糕方法:-)

像这样的东西会起作用:

$('#q').on('keyup', function() {
    var $el = $(this);
    var val = $el.val();
    if (val.length > 5){
        $el.mask('(999) 999-9999', {
            autoclear: false,
            placeholder: ''
        });
    }
});

请注意,我还将 placeholder 设置为空字符串,否则在应用 mask 时,光标将设置到 mask 占位符的末尾,您必须将插入符号移回几个空格。

关于javascript - 如果多于 x 个字符则屏蔽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40570082/

相关文章:

javascript - 将时间和数据存储在 firebase 数据库中

javascript - 无法访问被点击的元素

javascript - JQuery 移动表单验证

javascript - 使用 Prototype JS 观察单选按钮选择的变化

javascript - 从页面底部向上滚动到一个元素

javascript - 如何从变量 CoffeeScript 启动一个类

javascript - Axios,fetch() 将请求 header 设置为 Access-Control-Request-Headers 而不是单独的 header

javascript - 在我的模板中显示数组值的总和值(jQuery 或 Underscore)

javascript - 如何在 AngularJS 中加载 View 变量之前检测浏览器返回?

html - 单击标签时禁用输入焦点