在将按键输入jQuery Masked Input时,如何保持现有值不向右移?

我有一个文本框,我用作计时器显示“hh:mm:ss”当我选择框并按一个数字时,它会在光标位置插入数字,但不是替换该位置的值,而是将所有现有价值转移。 例如,计时器文本框显示“01:00:35”,我用1替换第一分钟位置,然后计时器文本框将显示为“01:10:03”。

有谁知道如何强制文本框替换而不是插入光标位置?

我试过拦截onKeyPress,手动执行替换,重写整个计时器文本,然后返回false。 但是,这不适用于jQuery蒙版输入,因为我的函数首先运行。

看起来这是蒙版输入插件的一个function。 您可以尝试通过替换以下方法来修改插件,然后在调用它时将noshift选项设置为true(警告我对此进行了最小的测试,但它似乎有效) – $(’#showTime’)。mask( “99:99:99”,{noshift:真});

function shiftL(pos) { if(!settings.noshift){ while (!tests[pos] && --pos >= 0); for (var i = pos; i < len; i++) { if (tests[i]) { buffer[i] = settings.placeholder; var j = seekNext(i); if (j < len && tests[i].test(buffer[j])) { buffer[i] = buffer[j]; } else break; } } } writeBuffer(); input.caret(Math.max(firstNonMaskPos, pos)); }; function keypressEvent(e) { if (ignore) { ignore = false; //Fixes Mac FF bug on backspace return (e.keyCode == 8) ? false : null; } e = e || window.event; var k = e.charCode || e.keyCode || e.which; var pos = $(this).caret(); if (e.ctrlKey || e.altKey || e.metaKey) {//Ignore return true; } else if ((k >= 32 && k <= 125) || k > 186) {//typeable characters var p = seekNext(pos.begin - 1); if (p < len) { var c = String.fromCharCode(k); if (tests[p].test(c)) { if(!settings.noshift) shiftR(p); buffer[p] = c; writeBuffer(); var next = seekNext(p); $(this).caret(next); if (settings.completed && next == len) settings.completed.call(input); } } } return false; };