我的 HTML 表单有这个标记:
<fieldset>
<legend>
<label> <input type="checkbox" class="warnOnUncheck" /> Include the following data </label>
</legend>
<div class="fieldsetContent">
<!-- and a bunch of <input type="text" /> here. -->
</div>
</fieldset>
我有两个由 DOM-ready 调用的脚本:
- 当复选框未选中时,第一个折叠字段集的内容并显示
- 第二个,
confirm()
在未选中复选框时显示确认消息。如果用户单击“否”,则重新选中该复选框。
问题是第一个事件处理程序总是被调用,所以即使用户单击“否”,字段集内容仍然是隐藏的。
这是我的(删节的)jQuery 代码(在 DOM-ready 事件处理程序期间调用):
$("fieldset.collapseable legend input").change(function(event) {
var localFieldsetContent = $(this).closest("fieldset").find("div.fieldsetContent");
var checked = $(this).is(":checked");
if( checked && localFieldsetContent.is(":visible") ) {
// if checked and already visible, then skip entirely.
return;
}
localFieldsetContent.slideToggle(200);
);
$("input[type=checkbox].warnOnUncheck").change( function(event) {
if( !this.checked ) {
var message = $(this).data("warnMessage");
var confirmed = confirm( message );
if( !confirmed ) {
this.checked = true;
event.stopImmediatePropagation();
}
}
} );
我以为这event.stopImmediatePropagation();
会起作用,但事实并非如此。
如何防止字段集在confirmed
为 false 时被折叠?