2010-01-20 85 views
0

基本上,當點擊模式創建的提交按鈕,並調用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本身。

+0

我想我們需要更多的信息:jQuery版本,你正在使用的驗證程序等。 – 2010-01-22 21:58:40

回答

0

你有DIV內的形式,是你預期的(我不明白的形式後</div> ......)

<div id="UpdateDiv"> 
<div id="ErrorDiv"> 
</div> 

也許應該是:

<div id="UpdateDiv"> 
<div id="ErrorDiv"></div> 
</div> 
+0

哎呀,我會解決這個問題。但是,表格是在模態分區。 – 2010-01-20 13:04:41