2

次のコードがあります。ここでは、jQuery で選択コンボボックスの変更時イベント ハンドラーを作成しようとしていますが、アラート メッセージが表示されません。ここで何が問題なのですか?

  $(document).ready(function () {
        var combo = $("#Supplier_Sel").combobox();
        $($('.ui-combobox-input')[3]).css('width', '300px');
        $("#toggle").click(function () {
            $("#Supplier_Sel").toggle();
        });
        //this change event never gets fired. WHY??
        $("#Supplier_Sel").change("dssd",function () {
            alert('Handler for .change() called.');
        });
    });

また、私のページには次のスクリプトが含まれています。コンボボックスの onchange イベント用に他のスクリプトを追加する必要があるのでしょうか?

    <script type="text/javascript" src="../jquery/jquery-1.7.2.js"></script>
    <script type="text/javascript" src="../jquery/ui/jquery-ui-1.8.21.custom.js"></script>
    <script type="text/javascript" src="../jquery/jquery.scrollIntoView.min.js"></script>
4

8 に答える 8

4

これはみんなを驚かせるでしょう。しかし、私にはそれはロケット科学のように思えます。笑。jQueryコンボボックスの変更イベントを発生させるには、常に以下のようなコードを使用する必要があります。この投稿で言及されているさまざまなアプローチのすべてがそれを行うわけではありません。select要素のjQueryでコンボボックスメソッドを呼び出している間に、イベントをワイヤリングする必要があります。また、changeイベントは発生しませんが、上記の方法で接続すると、表示される選択されたイベントは常に発生します。

        $(document).ready(function () {
        $("#Supplier_Sel").combobox({
            selected: function (event, ui) {
                alert('Handler for .change() called.');
            }
        });
        $($('.ui-combobox-input')[3]).css('width', '300px');
        $("#toggle").click(function () {
            $("#Supplier_Sel").toggle();
        });
    });

コンボボックスウィジェットのjQueryコードを見ると、上記のアプローチは理にかなっています。これを以下に示します。

select: function( event, ui ) {
                 ui.item.option.selected = true;
                 //select.val( ui.item.option.value );
                 self._trigger( "selected", event, {
                    item: ui.item.option
                 });
              }
于 2012-07-09T04:29:22.383 に答える
1

メソッドが何をするのかはわかりません.combobox()が、実際のコンボボックスが必要で、HTMLのトリックを実行しているのではないかと思います。したがって、実際にはもはやドロップダウンではなく、onChangeメソッドを使用できません。

どのライブラリに.combobox()メソッドがあるかへのリンクを提供すると、誰かがチェックできますが、それはいくつかのスパンとテキスト入力要素(jQuery UIバージョンなど)になると確信しています。これらには変更方法がありません。

于 2012-07-09T04:21:14.457 に答える
1

以下のコードは私のために働いています。テスト済み。

単純にコンボ ボックスを選択する場合は、以下のコードでイベント トリガーを変更します。

$("#mySelectCombo").on('change',  function () {
                alert("test");              
            });

Jquery ベースの選択コンボの場合は、以下のコードでイベント トリガーを変更します。

$("#mySelectCombo").combobox({                    
                select: function (event, ui) {
                   alert("hello");
                }
            });
于 2014-04-11T00:06:25.043 に答える
1

これは私のために働いた:

    $("#combobox_old").combobox({
        selected: function (event, ui) {
            alert('Handler for .selected() called.');
        }
    });

Murugesan Bakthavachal は、(私にとっては) 解決策も書いていますが、コードには変更イベントの定義が既に 1 つあるため、他のコードは機能しないと思います。$.widget( "ui.combobox" , {...});したがって、次のコードは機能しません。

    $("#mySelectCombo").on('change',  function () {
       alert("test");              
    });
于 2015-08-24T02:20:12.897 に答える
0

試す:

$('#Supplier_Sel').live('change',function(){
   alert('Handler for .change() called.');

});
于 2012-07-09T03:22:06.953 に答える
0
$("#Supplier_Sel").change(function () {
     alert('Handler for .change() called.');
 });

削除する"dssd"

于 2012-07-09T03:19:41.713 に答える
0
//Assuming Supplier_Sel is the selectbox id,this will be all you need

        $("#Supplier_Sel").change(function () {
            alert('Handler for .change() called.');
        });
    //or if its dynamically generated then

 $('body').delegate('#Supplier_Sel','change',function () {
            alert('Handler for .change() called.');
        });
于 2012-07-09T03:20:32.710 に答える