Html Jquery UI对话框内的输入是否未发送?

Html Jquery UI对话框内的输入是否未发送?,html,forms,jquery-ui,post,Html,Forms,Jquery Ui,Post,对话框中的输入字段没有被发布,我不知道为什么 我已经在mac firefox和safari以及windows IE和firefox上进行了测试,结果都是一样的,所以我认为这不是浏览器的问题,如果我禁用该对话框,这些字段就可以正常运行 我重新阅读了jquery ui文档,但找不到我做错了什么。。。对话框似乎不太可能不支持输入 下面是我正在使用的代码的浓缩版本: <script type="text/javascript"> $(document).ready(function(){

对话框中的输入字段没有被发布,我不知道为什么

我已经在mac firefox和safari以及windows IE和firefox上进行了测试,结果都是一样的,所以我认为这不是浏览器的问题,如果我禁用该对话框,这些字段就可以正常运行

我重新阅读了jquery ui文档,但找不到我做错了什么。。。对话框似乎不太可能不支持输入

下面是我正在使用的代码的浓缩版本:

<script type="text/javascript">
 $(document).ready(function(){
  $("#dialog").dialog({
   autoOpen: false,
   buttons: {
    "OK": function() {
     $(this).dialog('close');
    }
   }
  });
  $("#publishSettings").click(function(){
   $("#dialog").dialog('open');
  });
 });
</script>

<form method="POST" action="publish.php">
 <input type="button" id="publishSettings" value="Publish Settings">
 <div id="dialog">
  Publish Date
  <input type="text" name="publishOn"><br>
  Unpublish Date
  <input type="text" name="unPublishOn">
 </div>
 <input type="submit" name="pubArticle" value="Publish">
</form>

$(文档).ready(函数(){
$(“#对话框”)。对话框({
自动打开:错误,
按钮:{
“OK”:函数(){
$(this.dialog('close');
}
}
});
$(“#发布设置”)。单击(函数(){
$(“#dialog”).dialog('open');
});
});
出版日期

未发布日期
没什么不寻常的,对吧?为什么这对我没用


谢谢

我很确定jqueryui将对话框部分从其在dom中的正常位置断开,然后将其移动到另一个位置。这将使您的输入元素脱离表单父元素。如果没有表单元素,就无法提交表单,因此它会失败

我建议将html改写为:

<div id="dialog">
<form method="POST" action="publish.php">
 <input type="button" id="publishSettings" value="Publish Settings">
  Publish Date
  <input type="text" name="publishOn"><br>
  Unpublish Date
  <input type="text" name="unPublishOn">
 <input type="submit" name="pubArticle" value="Publish">
</form>
</div>

出版日期

未发布日期
如果publishSettings按钮不需要在弹出窗口中,那么您可以将其移出表单,只需在提交事件中捕获其值,并在提交任何内容之前将其添加为隐藏的输入元素


祝你好运。

当JQuery打开对话框时,它会将其移到表单之外

以下是解决方案:

基本上在你的情况下:

var dlg =  $("#dialog").dialog({ 
   autoOpen: false, 
   buttons: { 
    "OK": function() { 
     $(this).dialog('close'); 
    } 
   } 
  }); 
dlg.parent().appendTo($("#yourformId")); 

在兼容html5的浏览器(不是IE,而是最新的ff、chrome和safari支持)上,您可以在输入字段上设置“form”属性,这样您就可以将它们放在任何需要的地方。我也遇到了这个问题,花了一些时间弄明白ie为什么不发送对话框输入

我知道这是一个老问题,但对于有相同问题的人来说,有一个更新更简单的解决方案:jQuery UI 1.10.0中引入了“appendTo”选项


我也遇到了同样的问题,解决方案是(如user2100025所说)在代码中添加“appendTo=”#yourform“。这是我的代码,工作正常

我希望它能帮助某人:)


$(函数(){
$(“#对话框”)。对话框({
自动打开:错误,
可调整大小:false,
莫代尔:是的,
附录:“#我的表格”,
按钮:{
“是”函数(){
$('#myform')。提交();
},
“否”函数(){
$(this.dialog('close');
}
}
});
$(“#按钮”)。单击(函数(){
$(“对话框”)。对话框(“打开”);
});
});

棘手!我看到了那个问题,但没有读完,因为我认为它是asp.net特有的。哎呀。谢谢由于jQueryUIV1.10.0,您可以直接使用appendTo属性执行此操作-这是愚蠢的。Jquery应该使它更简单。不过谢谢你的帮助。appendTo的问题是,如果你的对话框大部分时间都是隐藏的。。即使对话框未打开,对话框中的输入字段也会显示在窗体底部。我通过添加$(this.appendTo($('#$strHostForm'))解决了这个问题;到对话框关闭按钮处理程序,而不是将其放入定义中-我的关闭处理程序然后发布表单,因此用户看不到字段出现
$("#dialog").dialog({
    appendTo: "form"
    ....
});