在jquery UI模式对话框中检查复选框状态

时间:2012-05-02 06:36:17

标签: jquery jquery-ui checkbox dialog modal-dialog

我有一个带有复选框的模态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');
                }
            }

当我第一次打开对话框时,一切正常并提醒正确的检查状态。但是,当我第二次返回状态时,无论是第一次,状态都会“检查”或“未检查”。我需要改变什么?

我也尝试了().attr().prop,结果相同。

3 个答案:

答案 0 :(得分:1)

在您的代码中,我看到语法错误。注意你的'。 有关复选框http://api.jquery.com/checked-selector/

的更多信息,另请参阅jQuery API

答案 1 :(得分:1)

关闭对话不会破坏它。虽然你没有提到你是如何打开对话的,但我想你只是再次运行这个代码。如果是这样,您将创建所有这些元素的副本。当您在页面上有2个具有相同ID的元素时,您的浏览器将始终返回第一个,因此您的“无论是第一次”。

{close}处理程序中的.remove()对话框,或者每次都不重新创建内容。

答案 2 :(得分:1)

简单的解决方案。你需要使用class for checkbox并使用:last的选择器,因为ui模式对话框使这个元素重复。

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