丢失表单字段 - 使用jquery对话框模式

时间:2012-11-30 08:37:08

标签: jquery jquery-ui modal-dialog

我有一张表格。在此表单中,我使用模式对话框,通过单击按钮显示。该对话框包含一个div,包括一些相同形式的输入字段。它的内容永远不会传输到服务器(方法POST),所以我开始调试一点......

  1. 当我不打开对话框时,字段可用(服务器端)
  2. 当我打开对话框并在字段中键入一些值时,不再传输字段(不可用)
  3. 如果我不隐藏(显示:无)div - 在加载表单时可以看到该字段 - 我在不使用模态对话框的情况下将其填满,然后传输。
  4. - >为什么对话框“删除”我的表单中的字段???

    感谢您的任何输入! URS

    HTML

    <button type="button" id="opener">other, please click here</button>
    
    <div id="dialog-modal" title="type in the new elements:" style="display: none">
    <p>country:<input type="text" class="small" id="othercountry" name="othercountry" value=""  </p>
    <p>ccode:<input type="text" class="small" id="othercountryCode" name="othercountryCode" value=""></p></div>
    

    的Javascript

    <script>
    $( "#opener" ).click(function() {
        $( "#dialog-modal" ).dialog({
           height: 140,
           modal: true
        });
        $( "#dialog-modal" ).bind('dialogclose', function(event) 
          { do some other things, not relevant for the form }
        );
    });
    </script>      
    

    jQuery 1.8.2

3 个答案:

答案 0 :(得分:1)

默认情况下,jQuery会将对话框附加到正文,因此您可能需要将其移回窗体内。这可以这样做:

$('#dialog-modal').parent().appendTo($('form:first'))

有关错误提示,请参阅here

答案 1 :(得分:0)

永远不会看到你的表格标签,纯粹猜测必须在模态div中找到表格标签。

<div id="dialog-modal" title="type in the new elements:" style="display: none">
    <form>
        <p>country:<input type="text" class="small" id="othercountry" name="othercountry" value=""  </p>
        <p>ccode:<input type="text" class="small" id="othercountryCode" name="othercountryCode" value=""></p>
    </form>
</div>

答案 2 :(得分:0)

我有同样的问题,我发现实际上没有任何工作。如前所述,jquery对话框从标记内移动并附加到body标记。这就是为什么它没有打开对话框的原因。一旦打开,对话框就会移动到body标签和form标签之外。我通过在对话框中放置一个表单标签来解决这个问题,因此无论它在哪里都会有一个表单提交给服务器。通常,您有一个div标签,其中包含隐藏的对话框标记,并在必要时显示。只需在此div中放置一个表单标记,但在所有输入标记之外,以便在单击按钮时提交它们。你可以拥有多个表单标签,但是你不能嵌套它们,所以你应该将所有的jquery对话框直接放在body标签下但不在任何其他表单标签之外,这样如果对话框还没有显示它们就不会发生冲突。