在jQuery对话框中,asp.net表单控件是不可读的,你如何解决它?

我有一个多刺的。 我有一个asp.net网页表单页面。 在页面中,我有一个div标签,我已将其设置为用作jQuery对话框。 在div中有一些jQuery控件。 我打开对话框,然后点击其中一个按钮开始回发。 当页面回发时,代码隐藏还没有读取控件中的值。 当然对html的一点点研究表明,对话框占用了我的div并将其移动到我的asp.net表单标签外的html页面的底部。 乌尔克!

我该怎么回事呢?

并不是说我的对话框代码真的有助于这种情况:

$("#dialog-copy").dialog({ autoOpen: false, height: 200, width: 400, modal: true, resizable: false, buttons: { 'Cancel': function () { $(this).dialog('close'); }, 'Yes': function () { $(this).dialog('close'); $("[id*=btnCopy]")[0].click(); } }, open: function () { $(":button:contains('Yes')").addClass("blue"); } }); $("[id*=btnCopy]").live('mousedown', function (e) { e.preventDefault(); $("#dialog-copy").dialog('open'); }); 

一个典型的div标签(移动到我的表单标签之外)看起来像这样:

 

Please enter a schedule number:

单击“是”将触发调用回发的按钮。

这是一个已知问题,你必须将它附加到这样的表单,你的普通.NET控件可以回发:

  open: function () { $(this).parent().appendTo("form"); $(":button:contains('Yes')").addClass("blue"); } 

更新版本的jQuery更新:

  $('#yourDIv').dialog({ ....., appendTo: $('form'), .... }); 

让对话框按钮function在表单中添加一个隐藏字段,使用正确的名称,即在对话框中使用输入作为参考,然后再提交表单。

  buttons: { 'Cancel': function () { $(this).dialog('close'); }, 'Yes': function () { $(this).dialog('close'); $('#dialog-copy').find('input').each( function() { var $this = $(this); $('form').append(''); }); $("[id*=btnCopy]")[0].click(); } }, 

你可以试试这个。 在对话框中保持常规html输入,然后在单击回发按钮之前将html文本输入中的值移动到asp:TextBox或者甚至是asp:HiddenInput。

喜欢:

 $("#dialog-copy").dialog({ autoOpen: false, height: 200, width: 400, modal: true, resizable: false, buttons: { 'Cancel': function () { $(this).dialog('close'); }, 'Yes': function () { $(this).dialog('close'); $('input[id$=_txtSchNo').val($('#dummy').val()); $("[id*=btnCopy]")[0].click(); } }, open: function () { $(":button:contains('Yes')").addClass("blue"); } }); $("[id*=btnCopy]").live('mousedown', function (e) { e.preventDefault(); $("#dialog-copy").dialog('open'); }); 

和标记:

 
.... ...