1

所以我有一个input[type="number"](最好有一个pattern="[0-9]*"属性来在iOS中调出正确的键盘(iPhone,在iPad上不起作用))

当我以编程方式更新值时,iOS 搞砸了,Android 完全拒绝工作。

我在这里有一个小测试用例:http: //jsfiddle.net/9QUPe/

基本上,键盘(至少在 iOS 上)不会给你一个小数位,所以我想为用户添加它。

$('input').on('keyup', function(){
    var val = this.value.replace('.','');
    if(val.length <= 2){
        this.value = '.'+val
    }else{
        this.value = val.slice(0,-2) +'.'+ val.slice(-2);
    }
});

在 Chrome (Win7) 上完美运行 - 但 iOS 不接受零(即使数据保存为字符串),Android 将完全清空输入(无论pattern属性是否存在(参见http://jsfiddle. net/9QUPe/1在 Android 上用于此测试用例))。

关于如何让它发挥作用的任何想法?

4

1 回答 1

0

我想我可以替换input type="number"input type="tel"提供类似的键盘,并在 iOS/Android 上正常工作 - 但会带来额外的字符 ,;+*#-()N...

所以我想出的解决方案是使用type="tel"和剥离那些额外的字符。

$('input').on('keyup change', function() {
    var val = this.value;
    val = val.replace(/\D/g, '');

    if (val.length <= 2) {
        this.value = '.' + val;
    } else {
        this.value = val.slice(0, -2) + '.' + val.slice(-2);
    }
});​

(见http://jsfiddle.net/9QUPe/9/

于 2012-11-06T20:08:00.143 回答