2

这个问题似乎发生在基于 webkit 的浏览器(chrome 和 safari)中。不是火狐。

在将某些输入字段限制为仅数字和 a 之后:,我不再能够选择文本或使用箭头键向左移动光标。输入被取消选择或在光标的情况下:它被移动到输入的末尾。(我可以通过用鼠标单击将光标放在字符串中的某个位置)

使用的代码:

$('#from, #to, #rate, #break').keyup(function () { 
    this.value = this.value.replace(/[^0-9:\.]/g,'');
});

小提琴中的示例:http: //jsfiddle.net/PaulvdDool/EKYBr/

我做错什么了吗?这是我无能为力的负面影响吗?或者有没有办法使文本选择和光标移动成为可能?

4

2 回答 2

1

当您覆盖该值时,插入符号会自动转到输入的末尾。

您需要做的是仅在需要时覆盖该值。即类似的东西:

$('#from, #to, #rate, #break').keyup(function () { 
    switch(e.which) {
        case 37:
        case 38:     
        case 39:
        case 40: break;
        default: this.value = this.value.replace(/[^0-9:\.]/g,'');
    }
});

演示

于 2013-07-19T13:17:43.410 回答
0

您每次都覆盖该值。你最好应该得到密钥,不要让用户输入它。

$('#time').keydown(function (event) {
        // 48-56 => 0-9 | 58 = ":"
        if((event.keyCode < 48 || event.keyCode > 56) or event.keyCode != 58)
        {
            event.preventDefault();
        }
});

检查这个小提琴

于 2013-07-19T13:26:19.540 回答