我的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准备叫了两个脚本:
- 第一个崩溃的内容当复选框未选中并显示
- 第二个显示一个
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;'而不是stopImmediatePropagation – dakait 2013-03-18 07:44:32
尝试返回false;如果我没有错,它会这样做 – xurca 2013-03-18 07:33:51