2010-01-20 43 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