2014-03-25 142 views
1

我想在輸入時從字符串中刪除非數字字符,但它在Chrome/Safari中不起作用 - 任何人都知道解決方法?Javascript正則表達式替換 - Chrome

Chrome的問題是,如果您輸入4個數字,然後是一個字母,它會清除文本框並重新開始,而其他瀏覽器只是刪除該字母。

這裏是我的代碼:

$('input[type=number]').bind('keyup', function (e) { 
    this.value = this.value.replace(/[^0-9]+/g, ''); 
}); 

非常感謝

+0

你可以使用'/ \ d + /'而不是'/ [^ 0-9] + /' – Oriol

回答

3

代替this.value使用$(this).val()

$('input[type=number]').bind('keyup', function (e) { 
    $(this).val($(this).val().replace(/[^0-9]+/g, '')); 
}); 
+0

這看起來一樣的OP代碼 – Christophe

+0

@Christophe這是事實,但問題是該字段的值二傳手/吸氣。 – hsz

+1

你能澄清你的jQuery代碼和OP的vanilla-js之間的區別嗎?這是什麼問題? – Oriol

1

顯然,在Chrome中文字的類型號的輸入被認爲是無效,並且this.value返回空字符串。

爲了解決這個問題,你可以做的只是使用文本類型的常規輸入。

$('input').bind('keyup', function (e) { 
    this.value = this.value.replace(/[^0-9]+/g, ''); 
}); 
+0

+1這描述了真正的問題 – Oriol

+0

不幸的是,它是一個移動網站,並需要用數字標記該字段,以便在手機上打開數字鍵盤而不是常規鍵盤 –

+0

@ e-on然後我恐怕你運氣不好。我找到了更多信息:http://stackoverflow.com/a/18853513/485406和Chrome根據規格行事。 – Christophe