2011-10-26 4 views
3

私は郵便番号リゾルバを持っています。私は、入力の長さが5に達したときを追跡し、次に郵便番号を解決するためにサーバに問い合わせるためにkeyupイベントハンドラを使用しています。しかし、私は不必要にスクリプトが呼び出されないようにしたいので、キーダウンイベントを追跡し、テキストボックスにすでに5文字があるときにキーアップイベントを停止する方法があるのだろうかと疑問に思っていました(クエリがおそらく後にkeyupイベントハンドラを停止する方法がある場合は、既に送信されています)。私はこれが奇妙な質問のようなものなので、質問をしてください。ここで私が話しているかのレイアウトの種類:、代わりのkeydownイベントのどうすれば 'keydown'イベントブロックを 'keyup'イベントにすることができますか?

$('#zip_resolver').live('keydown', function(event){ 
    if($(this).val().length==5){ 
     //STOP KEYUP EVENT 
    }else{ 
     //DO NOTHING 
    } 
}); 
$('#zip_resolver').live('keyup', function(){ 
    if($(this).val().length==5){ 
     //SEND RESOLVE REQUEST 
    } 
}); 
+0

わかりません – ajax333221

答えて

4

あなただけのKeyDownがあったことを強制することができます4:http://jsfiddle.net/rkw79/H7PhT/1/あなたはすでにこれを知っているが、入力フィールドの最小/最大文字長のオプションがある場合は

$('#zip_resolver').live('keydown', function(event){ 
    wasfour = (4 == $(this).val().length); 
}); 
$('#zip_resolver').live('keyup', function(){ 
    if($(this).val().length==5 && wasfour){ 
     //SEND RESOLVE REQUEST 
    } 
}); 
1

どのように解決をしなければならない場合は、あなたが決めることからkeyupにチェックboolean型のフラグを持つでしょうか?

ような何か:あなたがフィールドを編集するとき

if (doresolve && length == 5) { 
    resolve(); 
    doresolve = false; 
} else if (!doresolve && length <> 5) { 
    doresolve = true; 
} 

その方法は、リゾルバのチェックはやり直しです。

関連する問題