我的ASP.NET窗体中的jQuery-UI对话框有问题:
$("#pnlReceiverDialog").dialog({
autoOpen:false,
modal: true,
height:220,
width:500,
resizable :false,
overlay: { opacity: 0.5,background: "black" },
buttons: {
"Cancel": function() {
$(this).dialog("close");
},
"Ok": function() {
__doPostBack('ctl00$phContent$ctl00$LetterLocation$pupNewReceiver','')
}
}
});
pnlReceiverDialog
包含一个ASP.NET TextBox
。
当我点击“确定”按钮时,表单会回发,但文本框没有值。
答案 0 :(得分:4)
jQuery对话框确实将字段移到< form>之外这就是为什么你没有看到回发的价值。
您有两种选择:
答案 1 :(得分:2)
我知道你可能已经检查过对象名是你写的那个(ctl00 $ phContent $ ctl00 $ LetterLocation $ pupNewReceiver)但我要做的第一件事就是加倍或三倍检查...... < / p>
我曾经在类似的情况下度过了将近一天的时间,唯一错误的是对象名称,因为客户端对象ID和客户端对象名称之间存在差异。
检查Request.Params集合以确保名称正确。
您还可以使用__doPostBack函数的第二个参数来指定要回发的值
以下是我通常做的事例:
__ doPostBack($(“#&lt;%= Me.btnDeleteItem.ClientID%&gt;”)。attr(“name”),$(“#&lt;%= txtId.ClientID%&gt;”)。val( ));
答案 2 :(得分:0)
JQuery Script封装在ASP.Net自定义控件和使用中 Page.ClientScript.GetPostBackEventReference(这一点, “”)。 pnlReceiverDialog是控件之外的DIV。
我检查了Request.Params,TextBox的值不存在。
答案 3 :(得分:0)
我无法回答特定问题。但是,我强烈建议您更改代码以使用asp.net插入像vitorsilva那样的对象ID - 即&lt;%= TEST.ClientID%&gt;其中TEST是文本框的ASP.Net ID或其他。如果更改页面结构,发送到浏览器的实际对象ID(即示例中的ctl00 $ phContent $ ctl00 $ LetterLocation $ pupNewReceiver)可能会更改。通过使用ClientID方法,您将始终获得正确的ID。
答案 4 :(得分:0)
是只读或禁用还是隐藏文本框?如果文本框是只读,禁用或隐藏的,ASP.NET不会回发值。
答案 5 :(得分:0)
我认为文本框没有价值,因为它最终会在表单之外。
尝试使用以下代码将Modal添加到表单中:
$("#ModalId").parent().appendTo(jQuery("form:first"));