jquery UI对话框和__DoPostback

时间:2008-12-16 11:53:22

标签: asp.net javascript jquery

我的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

当我点击“确定”按钮时,表单会回发,但文本框没有值。

6 个答案:

答案 0 :(得分:4)

jQuery对话框确实将字段移到< form>之外这就是为什么你没有看到回发的价值。

您有两种选择:

  1. 添加代码以在调用__doPostBack之前将对话框div移回到表单中 - 您可以使用类似 $(“form”)[0] .appendChild($(“div.yourdivdialog input:first”) [0]); 这样做。
  2. 在表单中添加隐藏字段(但不在对话框div中)并添加代码以在__doPostBack之前将对话框字段复制到隐藏字段。

答案 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"));