如何从输入类型编号中读取特殊字符

时间:2015-06-17 10:07:30

标签: javascript jquery html

在我的表单中,我有一些数字输入字段。通常只允许一位数。在输入一个数字后,onKeyUp选择下一个输入字段。但是,对于需要多个数字的情况,我想使用""作为指标。因此,当用户键入* 23时,它不会跳过。

我已经到了那么远,但是当我得到输入字段的值时,我收到一个空字符串。

我想从输入中删除星号。当我尝试在keydown事件中更改字段的输入时,其中multi设置为true,输入字段值不会改变。

更改输入类型确实解决了值为<input type="number" step="1" min="0" value="0"> var multi = 0; // Keys to be ignored by the keyup event of .singleDigit. var ignoreKeys = [ [8,46], [65,93], [107,222] ]; // Don't accept tab button, will skip an extra input field. // Don't skip to next input, if input starts with * // DOn't accept function buttons $(".singleDigit").on('keyup', function(e){ if(multi == 0 && $.isNumeric($(this).val()) && (e.which < ignoreKeys[0][0] || e.which > ignoreKeys[0][1]) && (e.which < ignoreKeys[1][0] || e.which > ignoreKeys[1][1]) && e.which < ignoreKeys[2][0]) { var inputs = $(this).closest('form').find('.input'); inputs.eq( inputs.index(this) + 1).focus(); } }); // on focus out reset multi boolean. $(".singleDigit").on('focusout', function() { multi = 0; }); // check for key combination of * var lastKey = null; $(".singleDigit").on('keydown', function(e){ if(lastKey != null) { if(lastKey == 16 && e.which == 56) { multi = 1; } } if(e.which != null) { lastKey = e.which; } }); 的问题,但该步骤不再起作用。

我觉得我为一些我觉得应该相当简单的事情制作了一大堆代码。

$('#mapmodals').on('shown.bs.modal', function () {
      alert("modal opened!");
  });

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。由于我有这个事件,我可以阻止默认操作。

var lastKey = null;
$(".singleDigit").on('keydown', function(e){
  if(lastKey != null) {
    if(lastKey == 16 && e.which == 56) {
      multi = 1;
      e.preventDefault();
    } 
  }
  if(e.which != null) {
    lastKey = e.which;
  }
});