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.このテスト ケースでは、Android のnet/9QUPe/1 ))。

これを機能させる方法についてのアイデアはありますか?

4

1 に答える 1

0

同様のキーボードを提供し、iOS/Android で正しく動作するものに置き換えることができると考えましinput type="number"たが、追加の文字 ,;+*#-()N...input type="tel"

したがって、私が思いついた解決策は、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 に答える