0

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

  1. 当我不打开对话框时,这些字段可用(服务器端)
  2. 当我打开对话框并在字段中键入一些值时,字段不再传输(不可用)
  3. 如果我不隐藏(显示:无)div - 加载表单时该字段可见 - 我在不使用模式对话框的情况下填写它,就会传输。

-> 为什么对话框从我的表单中“删除”字段???

感谢您的任何意见!乌尔斯

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

4

3 回答 3

1

默认情况下,jQuery 将对话框附加到正文中,因此您可能必须将其移回表单中。这可以这样做:

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

请参阅此处获取错误票

于 2012-11-30T10:21:01.060 回答
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>
于 2012-11-30T08:57:35.090 回答
0

我有同样的问题,我发现没有任何实际工作。正如其他人之前所说,jquery 对话框从标记内移动并附加到 body 标记。这就是当您没有打开对话框时它起作用的原因。一旦打开,对话框就会向上移动到 body 标记和 form 标记之外。我通过在对话框中放置一个表单标签来解决这个问题,所以无论它在哪里,它总是有一个表单可以提交给服务器。通常,您有一个 div 标记,其中包含隐藏并在必要时显示的对话框标记。只需在此 div 内但在所有输入标签之外放置一个表单标签,以便在单击按钮时将它们全部提交。

于 2018-01-16T19:14:14.277 回答