仅输入数字后才能选择文本

时间:2013-07-19 13:16:06

标签: jquery html constraints numeric

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

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

使用的代码:

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

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

我做错了什么吗?这是一个消极的副作用我无能为力吗?或者有没有办法使文本选择和光标移动成为可能?

2 个答案:

答案 0 :(得分: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,'');
    }
});

<强> Demo

答案 1 :(得分:0)

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

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

选中此fiddle

相关问题