-3

こんにちは、キーアップ イベントごとに、入力の値の長さが ==3 かどうかをテストし、そうであれば別の関数を呼び出す関数があります。

私の問題は、長さが> 3のときにこのjquery関数の実行を停止したいということです

$('#txtInput').bind('keyup', lil);

unbind を試しましたが、うまくいきません。前もって感謝します

 var lil = function () 
             {
              var  strin = document.getElementById('txtInput').value;
              newstr = strin.replace(/[^\u0400-\u04FF0-9]/gi, '');
              alert (newstr);
              k = newstr.length;
             if (newstr.length==3)
             {triming();}



             }

$(function() 
{
     $('#txtInput').bind('keyup', lil);     

       /*if (k>3)
       $("txtInput").unbind("keyup", lil);  */ - this doesn't work



});
4

2 に答える 2

2

イベントのバインドを解除する代わりに、return ステートメントを使用して、関数内のコードの実行を停止します。

if (k>3)  return;
于 2013-02-04T07:49:28.743 に答える
0

主な問題は、イベント ハンドラーのバインドを解除するコードが、ページが読み込まれ、変数 k がまだ定義されていないときに 1 回だけ実行されることです。keyup ハンドラーが作業を完了するたびに、k > 3 かどうかを確認する必要があります。

var lil = function () 
{
    var  strin = document.getElementById('txtInput').value;
    var newstr = strin.replace(/[^\u0400-\u04FF0-9]/gi, '');
    alert (newstr);
    var k = newstr.length;
    if (k==3){
         triming();
    }
    if (k>3)
        $("txtInput").unbind("keyup", lil); 

$(function() 
{
    $('#txtInput').bind('keyup', lil);     
});

また、関数 lil を keyup イベントに 2 回バインドしています。1 回目は、おそらくドキュメントがブラウザーによって解析される前です。(暗黙の) $(document).ready() 関数でラップされている 2 番目のバインドのみを保持します。

また、前に「var」を付けて、newstr と k のローカル変数を作成したことにも注意してください。それらをグローバルにする必要がある場合は、元に戻すことができます。

于 2013-02-04T08:00:22.823 に答える