我有一个带有复选框的模态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
,结果相同。
答案 0 :(得分:1)
在您的代码中,我看到语法错误。注意你的'
。
有关复选框http://api.jquery.com/checked-selector/
答案 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');
}
}