基本上,當點擊模式創建的提交按鈕,並調用jQuery('#FormName')。submit()時,它將運行驗證,然後調用分配給submitHandler。之後,它要麼創建一個新的模態div或隱藏表單,我不明白爲什麼。jQuery驗證隱藏或拆除jQuery模態對話框提交
我調試過它,注意到在submitHandler方法調用後,形式.is(':hidden')= true,對於模態div也是如此。我很積極,我之前做過這件事,但似乎無法弄清楚我這次做錯了什麼。奇怪的是這是一個模態div顯示在屏幕上,但它完全沒有內容。 (即使投入隨機文本形式的外後,就像它是一個全新的模式格)
下面是設置方法:
function setUpdateTaskDiv() {
jQuery("#UpdateTaskForm").validate({
errorLabelContainer: "#ErrorDiv",
wrapper: "div",
rules: {
TaskSubject: {
required: true
}
},
messages: {
TaskSubject: {
required: 'Subject is required.'
}
},
onfocusout: false,
onkeyup: false,
submitHandler: function(label) {
updateTaskSubject(null);
}
}
);
jQuery('#UpdateDiv').dialog({
autoOpen: false,
bgiframe: true,
height: 400,
width: 500,
modal: true,
beforeclose: function() {
},
buttons: {
Submit: function() {
jQuery('#UpdateTaskForm').submit();
},
Cancel: function() {
...
}
}
});
其中:
function updateTaskSubject(task) {
//does nothing, it's just a shell right now
}
隱而不宣」現在什麼都不做。這裏的HTML:
<div id="UpdateDiv">
<div id="ErrorDiv">
</div>
<form method="post" id="UpdateTaskForm" action="Calendar.html">
<div>
<div class="floatLeft">
Date:
</div>
<div class="floatLeft">
</div>
<div class="clear">
</div>
</div>
<div>
<div class="floatLeft">
Start Time:
</div>
<div class="floatLeft">
<select id="TaskStartDate" name="TaskStartDate">
</select>
</div>
<div class="clear">
</div>
</div>
<div>
<div class="floatLeft">
End Time:
</div>
<div class="floatLeft">
<select id="TaskEndDate" name="TaskEndDate">
</select>
</div>
<div class="clear">
</div>
</div>
<div>
<div class="floatLeft">
Subject:
</div>
<div class="floatLeft">
<textarea id="TaskSubject" name="TaskSubject" cols="30" rows="10"></textarea>
</div>
<div class="clear">
</div>
</div>
<div>
<input type="hidden" id="TaskId" value="" />
</div>
<div class="clear"></div>
</form>
</div>
奇發現
事實證明,我得到這個工作的所有實例具有焦點被放回到模式本身。例如,使用驗證器將消息添加到錯誤div。 (成功與否)沒有做到這一點,模態對話顯然認爲它完成了它需要做的事情,只是隱藏了一切。不確定究竟是什麼原因,但爲了阻止這種行爲,必須將某種焦點分配給div本身。
我想我們需要更多的信息:jQuery版本,你正在使用的驗證程序等。 – 2010-01-22 21:58:40