0

チェックボックス付きのモーダル jQuery UI ダイアログがあります。

            $dialog = $('<div id="formContainer"></div>')
                        .html('<div>some text</div><input id="accept_cb" type="checkbox" checked="checked"/> Uncheck this box to disable.<br />')
                        .dialog({
                                autoOpen: false,
                                title: 'Title ',
                                modal: true,
                                buttons: {
                                    "Close": function() {
                                        checkboxHandler();
                                    },
                                    Cancel: function() {
                                        $( this ).dialog( "close" );
                                    }
                                }
                            });


            function checkboxHandler(){
                if ($('#accept_cb').is(':checked'))
                {
                  alert('checked');
                }else{
                  alert('not checked');
                }
            }

初めてダイアログを開くと、すべてが正常に機能し、正しいチェック済みステータスが警告されます。しかし、2度目に戻ると、最初の状態に関係なく、ステータスは「チェック済み」または「チェックなし」のままです。何を変更する必要がありますか?

().attr私もと().prop、同じ結果を試しました。

4

3 に答える 3

1

コードに構文エラーが表示されます。に注意してください'。チェックボックスの詳細については、jQuery API も参照してください http://api.jquery.com/checked-selector/

于 2012-05-02T06:43:27.390 に答える
1

ダイアログを閉じても、ダイアログは破棄されません。ダイアログを開く方法については言及していませんが、このコードをもう一度実行しているだけだと思います。その場合、これらすべての要素の複製を作成しています。ページに同じ ID を持つ 2 つの要素がある場合、ブラウザは常に最初の要素を返すため、「最初は何でも」です。

「閉じる」ハンドラーのダイアログか.remove()、毎回コンテンツを再作成しないでください。

于 2012-05-02T06:48:25.177 に答える
1

シンプルなソリューション。:lastUIモーダルダイアログがこの要素の複製を作成したため、チェックボックスにクラスを使用し、セレクターを使用する必要があります。

function checkboxHandler(){
   if ($('.accept_cb:last').is(':checked'))
   {
      alert('checked');
   }else{
      alert('not checked');
   }
}
于 2012-07-11T15:26:38.437 に答える