2016-07-08 63 views
0

我試圖替換錯誤的輸入表單輸入字段。這有什麼辦法使這個代碼工作?從輸入字段替換錯誤的輸入

<span class="input-bet"> 
    <input type="text" placeholder="0" data-required="true" maxlength='6'/> 
</span> 

$('.input-bet > input').on('input propertychange paste', function(e) { 
var youreg = /^[ю]+/gi; 
for (var i = 0;i<this.value.length;i++){ 
    if(this.value[i].match(youreg)){ 
     this.value[i] = this.value[i].replace(youreg, '.'); 
    } 
} 

如果有人需要 - 這裏是工作液 fiddle

+0

你能把你的html放在這裏嗎? – theinarasu

+0

您必須使用更改而不是propertychange。 – theinarasu

回答

1

您不能分配到在文本輸入元素的值單個字符。但是,您可以將替換爲的值。您可以更改腳本這樣:

$('.input-bet > input').on('input propertychange paste', function(e) { 
var youreg = /ю/gi; 
for (var i=0; i<this.value.length; i++){ 
    if (this.value[i].match(youreg)) { 
     this.value = this.value.replace(youreg, '.'); 
    } 
}}); 

但是,這是低效的,因爲它執行的每一個字符一個正則表達式match。相反,你可以使用replace()一氣呵成在更換有問題的字符:

$('.input-bet > input').on('input propertychange paste', function(e) { 
    this.value = this.value.replace(/ю/ig, '.'); 
}); 

注意,在你的模式[]並不需要,如果你只匹配單個字符。如果你想匹配和替換多個字符,那麼你可以使用這個模式:

this.value = this.value.replace(/[a-zю]/ig, '.'); 

其中例如將取代所有的字符「a」到「Z」以及「ю」。

+0

我不知道如何,但實際上你的第一個代碼是以正確的方式工作的。它僅替換'ю'字符格式輸入。非常感謝)你可以在這裏嘗試https://jsfiddle.net/DronSKM/pmj0w64k/1/我把'ю'字符改爲'r' –

+0

@BogdanTushevskyi:我想我已經解釋了它是如何工作的:將整個價值,而不是個別人物。第一個代碼示例是要顯示您的代碼如何修復。第二個代碼示例是展示一個更好的方法來做到這一點。第二種方法更高效,更短,所以我建議你使用它。 – mhawke