2017-07-18 63 views
2

我試圖從模糊和按鍵上的輸入字段替換特殊字符,即<,>,&。代碼工作正常,但問題是,一旦用戶輸入所需的字符串,然後嘗試編輯該字符串,它會將光標移動到字符串的末尾,因此用戶無法編輯它們之間的字符串。如何讓這個腳本更加用戶友好,以便用戶可以從任何地方編輯現有的字符串。替換字符的Javascript問題

HTML

<input type="text" class="prevent-special" name="name" value="HelloWorld" > 

腳本

$('.prevent-special').on('keypress blur',function(e){ 
    //console.log(e.keyCode); 
    $(this).val($(this).val().replace(/\<|\>|\&+/g,'')); 
}) 

JS Example

+0

問題是關鍵。你爲什麼使用它? 「模糊」就夠了 – Nimish

+0

@Nimish是嗎?爲什麼?你是項目發起人指定的要求? –

回答

2

試試這個:

$('.prevent-special').on('keyup blur',function(e){ 
 
    var start = this.selectionStart, 
 
     end = this.selectionEnd 
 

 
    $(this).val($(this).val().replace(/\<|\>|\&+/g,'')) 
 

 
    this.setSelectionRange(start, end) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 

 
<input type="text" class="prevent-special" name="name" value="HelloWorld" >

+0

非常感謝你,它的工作如你所願。 –

+2

您也可以將'keypress'改爲'keyup',這樣輸入中就不會顯示該字符。使用'keypress',清除操作不會被觸發,直到輸入下一個字符。 – vi5ion

+0

@ vi5ion:謝謝。我認爲'keyup'更合適。 – Ikbel