在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'); });
和标记:
Please enter a schedule number: