jquery - 定义模式时检测退格键

标签 jquery

我正在为我们的应用程序创建一个控件,允许它们屏蔽输入。这基于初始用户及其设置方式。它可以是他们想要的任何图案。

我有一段代码运行得非常好,除非你去删除刚刚输入的内容。如果人们是完美的,就会发现这一点,但我们并不那么需要删除我们刚刚输入的内容的能力。

所以我想知道是否有一种方法可以检测它们何时退格。

我的 html 看起来像

<p class="maskNum">
  <input type="text" class="form-control mask" autocomplete="off" maxlengthsocial="9" maxlength="11" />
  <input type="text" class="form-control maskval" autocomplete="off" maxlengthsocial="9" maxlength="9" />
</p>

我的 CSS 看起来像

.maskNum {
  position: relative;
}

.maskval {
  position: absolute;
  top: 0;
  color: black;
  background: transparent !important;
  border: none;
  left: 0;
  -webkit-text-fill-color: transparent; //sets just the text color 
  height: 1.5em;
}

input {
  height: 2em;
  width: 50%;
  border-radius: .5em;
  padding-left: 0.5em;
}

我的 jQuery 看起来像

var pattern = 'xxx-xx-0000';
var maxLength = pattern.length;
var maxLenthNum = pattern.replace("-", "").length;

$('.mask').attr('maxlength', maxLenthNum);
$('.maskval').attr('maxlength', maxLength);

$('.maskval').on('keyup keydown change', function() {
  var input = $(this).val();
  var output = "";
  for (var x = 0; x < input.length; x++) {
    if (x < pattern.length) {
      output = pattern[x] == 'x' ? output + 'x' : output + input[x];
    } else
      output += input[x]; 
  }
  if (input.length < pattern.length && pattern[input.length] == '-') {
    output += '-';
    $(this).val(output);
  } else {
    $(this).prev('input').val(output);
  }
});

和一个实例 http://codepen.io/zazvorniki/pen/XKNXJg这样您就可以准确地看到正在发生的事情。

最佳答案

看看this answer 。您需要捕获 keyup/keydown 事件,如果 keyCode 为 8(如果您还需要删除键,则为 46),然后执行您需要执行的任何操作来处理退格键。

基本上,您需要向已有的事件处理函数添加适当的参数,并在处理之前检查按下的键是 8 还是 46。

关于jquery - 定义模式时检测退格键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37949334/

相关文章:

javascript - $.when.apply 不评估数组中任何定义的函数

javascript - 如何为 fadeIn & toggle & fadeOut 的高度设置动画

javascript - 无法读取未定义的 n.extend.each 的属性 'length'

jquery - 如何在 JQuery 中获取具有指定元素的第一个子元素?

c# - 当@Html.TextBoxFor被jQuery更新时如何刷新@Html.ValidationMessageFor?

php - 在特定字段中未输入 X 秒后发送表单

jquery - Jquery 插件 FullCalendar 中的长标题

javascript - HTML5/jQuery 节拍器 - 性能问题

jquery - IE 8 jQuery 单击事件 - $(this) 导致未定义

javascript - Rails 3 检查是否启用了 Javascript(服务器端)