Javascript 在jQuery屏蔽输入中输入按键时,如何防止现有值向右移动?

Javascript 在jQuery屏蔽输入中输入按键时,如何防止现有值向右移动?,javascript,jquery,input,keyboard,Javascript,Jquery,Input,Keyboard,我有一个文本框,用作计时器显示“hh:mm:ss”。当我选择该框并按一个数字时,它会在光标位置插入数字,但不是替换该位置的值,而是将所有现有值移到另一个位置。例如,计时器文本框显示“01:00:35”,我将第一分钟位置替换为1,计时器文本框将显示“01:10:03” 有人知道如何强制文本框替换而不是插入光标位置吗 我尝试过截取onKeyPress,手动执行替换,重写整个计时器文本,然后返回false。但是,这对于jQuery屏蔽输入不起作用,因为我的函数首先运行。看起来这是屏蔽输入插件的一个功能

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

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


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

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

功能移位(pos){
如果(!settings.noshift){
而(!tests[pos]&&--pos>=0);
对于(变量i=pos;i=32&&k 186){//可键入字符
var p=seekNext(位置begin-1);
如果(p
看起来这是屏蔽输入插件的一项功能。您可以尝试通过替换以下方法来修改插件,然后在调用时将noshift选项设置为true(警告:我对此进行了最低限度的测试,但似乎有效)- $(#showTime').mask(“99:99:99”,{noshift:true})

功能移位(pos){
如果(!settings.noshift){
而(!tests[pos]&&--pos>=0);
对于(变量i=pos;i=32&&k 186){//可键入字符
var p=seekNext(位置begin-1);
如果(p
    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;
    };