0

変更ハンドラーを持つコンボボックスがあります-switch()

function switch() {
    var type= $('#ddType').val();
    search.keydown(function (event) {
         if (type == "SomeCode" &&....
}

このコードは、コンボボックスの値を変更するたびに発生します(ko) 。

search.keydown(function (event) {
    type = $('#ddType').val();
    if (type == "SomeCode" &&....
}

どうして?メソッドの最初の行のタイプが正常に機能し、タイプ値を現在選択されている値に変更し、コンボボックスの選択を変更するたびにキープレスイベントが初期化される場合は? キープレスの値の最初の値が古いのはなぜですか? どうも

4

3 に答える 3

1

この動作の理由は、keypress イベントは毎回新しいハンドラーを追加しますが、最初のハンドラーしか起動しないためです。したがって、最初のものは古い値で動作します。解決策 - 新しいハンドラーを追加する前に、ハンドラーのバインドを解除します。

function switch() {
    search.unbind('keydown');
    search.keydown(function (event) {
         if (type == "SomeCode" &&....
}
于 2012-10-30T09:38:26.980 に答える
0

keyupの代わりに使用してみてくださいkeydown

于 2012-10-30T08:38:13.317 に答える
0

bfavaretto は正しいです。Switch は予約されており、関数名として使用できません。

于 2012-10-29T19:43:40.250 に答える