2017-07-18 10 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

@ニミッシュですか?どうして?プロジェクトのスポンサーが要件を指定していますか? –

答えて

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

関連する問題