javascript - 移动输入无法以编程方式更新

标签 javascript jquery input

所以我有一个 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 只会完全清空输入(无论是否是模式)属性存在(有关此测试用例,请参阅 Android 上的 http://jsfiddle.net/9QUPe/1)。

关于如何让它发挥作用有什么想法吗?

最佳答案

我想我可以用 input type="tel" 替换 input type="number" ,它提供了类似的键盘,并且可以在 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/ )

关于javascript - 移动输入无法以编程方式更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13244193/

相关文章:

javascript - firebase 函数中无法访问全局变量

javascript - 如何强制按顺序加载脚本数组?

javascript - 减少 HTTP 请求

python - 如何在Python中不使用 "input"来检测输入?

javascript - jack 摩尔缩放 1.7.15 : Toggle zoom on touch device with double tap

javascript - 如何将新的构造函数属性推送到数组?

python - 如何读取多行原始输入?

python - 在python中通过sys.argv输入隐藏字符串

javascript - 双击两个 INS 标签中的单词 JavaScript window.getSelection

javascript - JQuery 计算返回 NaN