0

私は $("#text") を持っており、'replace me' という単語を $("text") に入力すると、自動的に 'replaced successfully' と 'goodbye' というフレーズに置き換えられるようにしたいと考えています。 'こんにちは'

これを行う正しい方法は、「置換」を正規表現で見つけて置き換えることであると想定していますが、これは私が得た限りです

          $('#text').keydown(function(){
                var text = $('#text').text();
                var replaceCommand = ['replace me', 'goodbye'];
                var replaceOutput = ['replaced successfully', 'hello'];
                    for (var i=0; i < replaceCommand.length; i++){
                        text.replace(replaceCommand[i]/i, replaceOutput[i]);
                    }
            });
4

4 に答える 4

2

replaceCommand 配列に定義済みの文字列が含まれている場合は、正規表現を使用する必要はありません。代わりに .replace() を使用してください。

デモ

var replaceCommand = ['replace me', 'goodbye'];
var replaceOutput = ['replaced successfully', 'hello'];

$('#text').keyup(function(){
    var text = $('#text').val();
    for (var i=0; i < replaceCommand.length; i++){
        text = text.replace(replaceCommand[i],replaceOutput[i]);
    }
    $('#text').val(text);
});​

更新 1 : $('#text') はテキスト ボックスです。したがって、$('#text').val() を使用して値を取得する必要があります。また、.replace() は置換された文字列を返します。したがって、テキストボックスの値に再度割り当てる必要があります。

于 2012-07-24T10:25:22.720 に答える
1

blur代わりにテキストボックスを使用してください。以下のコードは正規表現を使用していませんが、以下のコードが役立つかどうか教えてください:

 $('#text').blur(function(){ 
var text = $('#text').text(); 
var replaceCommand = ['replace me', 'goodbye']; 
var replaceOutput = ['replaced successfully', 'hello'];     
if($(this).val() == replaceCommand [0]){
$(this).val(replaceOutput[0]) ;
    }
else if($(this).val() == replaceCommand [1]){
$(this).val(replaceOutput[1]) ;
    }

});  

作業中のJSFIDDLE

于 2012-07-24T10:21:52.993 に答える
0

これは他の方法と同じくらい良い方法ですが、キーを押すたびに起動するため、キーダウンを使用するかどうかはわかりません。ただし、replaceという単語の最後の文字が入力されたらすぐにそれを取得する必要がある場合は、キーダウンが1つ(またはキーアップ)になります。

ただし、マウスで貼り付けた場合は起動しません。したがって、マウスイベントもトラップする必要があります。

ボックス内の値が必要なすべてである場合、onchangeはトリックを実行しますが、フォーカスを失うまで起動しません(ブラウザーが異なれば動作も異なります)。

于 2012-07-24T10:17:02.427 に答える
0

次のようなことを試してみてください:

$('#text').bind("keydown blur", function(){
                var jText = $(this);
                var newTxt = jText.val().replace(/replace(?!\s*successfully)/gi, "replace successfully");
                jText.val(newTxt);
            });

于 2012-07-24T12:22:10.323 に答える