0

私はJqueryで次のことをしようとしています。2 つのコンボボックスがあり、選択した値が同じであることを確認したい。ユーザーがコンボのいずれかで値を選択した場合、「無効な操作」を警告し、コンボの選択値を以前の値に設定します。だから私は書いた:

$("#SelectGroupMargin").live("onchange", function() {
   // save the value before the change in case the change is invalid
   var valBeforeChange = $("#SelectGroupMargin").val();
   var currentLimitedRuleVal =  $("#SelectGroup").val();
   var newFillerRule= $(this).val();

   // check that the new value does not colide with the value of the limited rule
   // if it does colide alert the user and return to the former value
   if (currentLimitedRuleVal == newFillerRule) {
     alert("invalid op");
     $("#SelectGroupMargin").text(valBeforeChange);
   } 
});

しかし、私にはいくつかの問題があります: 1) onchange が応答しません - クリックしてフォーカスアウトするだけです 2) newFillerRule は常に valBeforeChange と同じです

より良いアイデア/短いアドバイスはありますか ありがとう

4

2 に答える 2

1

changeメソッドではなくonchange、使用してみてくださいlive()。また、私の記憶が正しければ、変更イベントで使用するには jQuery 1.4+ が必要です。liveこれは、イベントの委任を処理するコードが 1.4+ でのみ実装されているためchangeです。

新しく選択した値を最後に選択した値と比較するという点では、使用するために選択した値を保存することを検討$.data()できます。次に、変更イベントの後の値を $.cache ($.data() の場合) に保存されている値と比較できます。値を保存します) 必要な処理を行います。クロージャーを使用して実装することもできます。

于 2010-02-28T08:51:25.393 に答える
0

$("#SelectGroupMargin") は、その関数のコンテキストでは $(this) と同じです。そして、ライブコールには「変更」を使用してください

于 2010-02-28T08:54:26.290 に答える