34

ドロップダウンがあります:<asp:DropDownList id="dropdownid" runat="server" class=blah"/>

私のjQueryでは、次のように変更イベントを割り当てます:

$('#dropdownid').change(function() {......});

これで、ドロップダウンから別の値を選択したときに機能しますが、同じ値をもう一度選択したいとしましょう。(同じ値で別の呼び出しを行いたいため)したがって、ドロップダウンから選択した値をクリックして再度「選択」するだけで(値を変更せずに)再度選択すると、イベントは発生しません。jqueryに割り当てなければならない別のイベントはありますか? 回避策は何ですか?

4

10 に答える 10

28

Vincent Ramdhanie の提案を拡張するには、次のようなことを行うことを検討してください。基本的に、他の場所で再利用できる独自の jQuery 関数が作成されます。

ステップ 1 : jQuery 関数を作成する

(function($) {
    $.fn.selected = function(fn) {
        return this.each(function() {
            var clicknum = 0;
            $(this).click(function() {
                clicknum++;
                if (clicknum == 2) {
                    clicknum = 0;
                    fn(this);
                }
            });
        });
    }
})(jQuery);

ステップ 2 : 新しく作成された jQuery 関数のファイルが使用のために参照されていることを確認します。

<script src="Scripts/jqDropDown.js" type="text/javascript"></script>

ステップ 3 : 新しい機能を利用する:

$('#MyDropDown').selected(function() {
    //Do Whatever...
});

元の情報
現在のコード ベースでは、asp:DropDownList から同じ値を選択しても、変更イベントは発生しません。

.blur イベントに別の jQuery 関数を追加してみてください。これは、コントロールがフォーカスを失ったときに発生します。

$('#dropdownid').blur(function() {......});

ぼかし機能がうまくいかない場合は、更新ボタンなどを追加して、利用しようとしている機能を起動するようにします。

于 2009-05-22T16:28:39.817 に答える
16

これを試して:

$(document).ready(function(){
 var clicknum = 0;
 $("#dropdownid").click(function(){
    clicknum++;
    if(clicknum == 2){
        alert($(this).val());
        clicknum = 0;
    }
 });
});

最初に、ユーザーがドロップダウン ボックスをクリックするたびにイベントを発生させたくないため、クリック数を追跡する変数 clicknum を作成します。2 回目のクリックは、ユーザーが行う選択です。

クリック数がたまたま 2 の場合、これは 2 回目のクリックであるため、イベントを発生させ、次回のためにクリック数を 0 にリセットします。それ以外の場合は何もしません。

于 2009-05-22T15:54:51.787 に答える
7

選択する代わりに、クリックイベントハンドラーを同封のオプションコントロールに接続するだけです。

$('#dropdownid option').click(function() {......});

これは、オプションが変更されたかどうかに関係なく、ドロップダウンからオプションを選択した場合にのみ発生します。

于 2009-05-22T16:51:15.630 に答える
3

APIによると:

change イベントは、コントロールが入力フォーカスを失い、フォーカスを取得してからその値が変更されたときに発生します。

代わりに、mousedown または click イベントを試してみてください。

于 2009-05-22T15:36:37.187 に答える
2

このソリューションをチェックしてください:
http://ledomoon.blogspot.com/2009/12/dropdown-selected-change-event-by.html

$(document).ready(function () {
    // select all the divs and make it invisible
    $("div.Content").css("display", "none");
    // Find all the combos inside the table or gridview
    $("#tblItems").find("select.Status").each(function () {
        // Attached function to the change event of each combo
        $(this).change(function () {
            if ($(this).val() == "test1") {
                // Change the visibility of the next div after the selected combo if the selected value = test1
                $(this).parent().find("div.Content").fadeIn("slow"); //css("display","block");
            } else {
                $(this).parent().find("div.Content").fadeOut("slow"); //.css("display","none");
            }
        });
    });
});

お役に立てれば

于 2009-12-31T10:32:06.887 に答える
0

ドロップダウンの選択されたアイテムは、すでに行われた選択を反映するためにあります。

私の提案は、必要なアクションが完了するたびに、ドロップダウンを「選択...」などのデフォルト値にリセットすることです。したがって、ユーザーがアクションAを2回実行する必要がある場合、各アクションの後にドロップダウンがリセットされます。

  1. ユーザーはドロップダウンからアクションAを選択します。
  2. アクションAが実行され、ドロップダウンがリセットされます。
  3. ユーザーはドロップダウンからアクションAを選択します。
  4. アクションAが実行され、ドロップダウンがリセットされます。

お役に立てれば、

リッチ

于 2009-05-22T16:44:13.003 に答える
0

私にとって、次の解決策はうまくいきました:

$("#dropdownid select").click(function() {
  alert($("#dropdownid select option:selected").html());
});
于 2010-09-28T02:30:10.720 に答える
0

この問題は、クライアントによる基本選択 HTML の処理が原因です。ほとんどのクライアントは非変更にフラグを立てないため、別のことを試す必要があります。

おそらく「更新」ボタンなどを追加するでしょうが、私は開発者でありデザイナーではないので、おそらく間違っています。:)

于 2009-05-22T15:38:54.393 に答える
-1

また:

$('#dropdownid select option').click(function() {
   ....
}
于 2012-08-23T11:53:01.353 に答える