gpt4 book ai didi

javascript - 在 jQuery Masked 输入中输入按键时,如何防止现有值向右移动?

转载 作者:行者123 更新时间:2023-11-28 02:56:17 24 4
gpt4 key购买 nike

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

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

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

最佳答案

看起来这是屏蔽输入插件的一个功能。您可以尝试通过替换以下方法来修改插件,然后在调用它时将 noshift 选项设置为 true(警告我对此进行了最少的测试,但它似乎有效)-$('#showTime').mask("99:99:99",{noshift:true});

    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;
};

关于javascript - 在 jQuery Masked 输入中输入按键时,如何防止现有值向右移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2561252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com