我的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