0

私はjavascriptでいくつかの問題に遭遇しました。

実際、私のデータベースには、略語と同等のレコードが多数あります。

たとえば、tel => 電話などを置き換えます...

だから私はこの機能を持っています

$('#tags').keyup(function(e){
    var code = e.which ? e.which : e.keyCode;
     console.log(code);
    if (code == 'tel'){
        var input = this.value;
        input = input.substr(0, input.length -1);
        console.log(input);
        input += 'tel';
        this.value = input;        
    }

});

実際、これはうまくいきません。問題は、JavaScriptのコンソールに大きな間違いがないことです。

どんな種類の助けも大歓迎です。

敬具。

SP。

</p>

4

5 に答える 5

7

これはうまくいくはずです:

$('#tags').keyup(function(e){
    var code = e.which ? e.which : e.keyCode;
    var input = this.value;
    if (input.indexOf('tel') != -1) {
       this.value = this.value.replace(/\btel\b/gi,'telephone');

    }

});

ここにフィドルがあります

于 2012-10-31T08:54:40.707 に答える
3

When using keyup() the event handler only returns the keycode of the pressed key. For instance an x results in e = 88.

Use $("#tags").val() to get the value of the input element.

于 2012-10-31T08:50:27.163 に答える
3

keyCodeまたはプロパティはwhich文字列を返しません。単一の文字さえも返しません。クライアントが打ったキーを表すキー コードを返します。対応する char: を取得したい場合String.fromCharCode(e.which || e.keyCode);
たとえば、ユーザーがaキーを押すと、キーコードは になり97String.fromCharCode(97)が返されますa

天気を知りたい場合、または要素の現在の値に省略形が含まれていないtel場合は、次のようにする必要があります。

$('#tags').keyup(function(e)
{
    this.value = this.value.replace(/\btel\b/gi,'telephone');
});

これはテストされておらず、さらに作業が必要になる可能性が非常に高いtelですが、私の知る限り、すべてのbyを置き換えたいと考えていますtelephone。私が使用する式/\btel\b/は、すべての部分文字列を置き換えますが、その前後telに単語境界がある場合 (単語の一部を置き換えないようにするため)。
文字列の末尾とダッシュも両方とも単語の境界と見なされるわけではありません。と入力したい場合はtelevision、最終的に と入力しますtelephoneevision。これを避けるには、もう少し複雑な式が必要になります。JS がダッシュを境界として扱わないようにする方法の例を次に示します。文字列の末尾も考慮してください。

アップデート

おそらく、この表現は思ったほど簡単ではないので、次の表現を使用することをお勧めします。

this.value = this.value.replace(/(?:(\-?\b))tel(?:(\b\-?.))/gi,function(all,b1,b2)
{
    if (b1 === '-' || b2.charAt(0) === '-')
    {//dash, don't replace
        return all;
    }//replace
    return b1 + 'telephone' + b2;
});

入力:電話が必要です。すぐに==>電話が必要です。電話が必要です。電話が
必要です。今夜のホステルを予約したい==>今夜
のホステルを予約したいテルアビブに行く ==>テルアビブに行く

于 2012-10-31T08:57:39.417 に答える
1

このように keypress を使用すると、code変数には押された文字の文字コードが含まれます。予想される「tel」のような文字列ではありません。onkeyup/ onchangeevent を使用して入力要素の val() をチェックし、 を使用しreplace()て略語を目的の文字列に変更できます。

$('#tags').keyup(function(e){

    var elem = $(this);
        var input = elem.val();

        // input = input.substr(0, input.length -1);  // This might not be necessary
        console.log(input);

        // do the replacement
        input = input.replace('tel','telephone');

        elem.val(input);        
    }

});
于 2012-10-31T08:53:36.470 に答える
0

文字列内の単語を置換するには、 replaceメソッドを使用します。

例えば:

var str = "This is AIR";
var newstr = str.replace("AIR", "All India Radio");
console.log(newstr);
于 2012-10-31T08:44:21.207 に答える