2012-11-06 29 views
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屬性存在(有關此測試用例,請參閱Android上的http://jsfiddle.net/9QUPe/1))。

關於如何使這項工作的任何想法?

回答

0

我想我可以用input type="tel"它提供了一個類似的鍵盤,並正確地適用於iOS/Android的替代input type="number" - 但在其他字符帶來的,+ *# - ()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/