在我的表单中,我有一些数字输入字段。通常只允许一位数。在输入一个数字后,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!");
});
答案 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;
}
});