【问题标题】:Losing Textbox value on postback回发时丢失文本框值
【发布时间】:2011-03-01 13:01:32
【问题描述】:

在一个页面中我有一个链接;单击它会打开一个对话框并为该对话框设置一个文本框值。

但是,一旦我在该对话框中单击提交,文本框的值为空。

链接:

<a href="#" onclick="javascript:expand('https://me.yahoo.com');
jQuery('#openiddialog').dialog('open'); return false;">
<img id="yahoo" class="spacehw" src="/Content/Images/spacer.gif" /></a>

脚本:

<script type="text/javascript">
  jQuery(document).ready(function () {
    jQuery("#openiddialog").dialog({
        autoOpen: false,
        width: 600,
        modal: true,
        buttons: {
           "Cancel": function () {
              $(this).dialog("close");
           }
        }
    });
});
function expand(obj) {
    $("#<%=openIdBox.ClientID %>").val(obj);
}

对话框:

<div id="openiddialog" title="Log in using OpenID">
<p>
    <asp:Label ID="Label1" runat="server" Text="OpenID Login" />
    <asp:TextBox ID="openIdBox" EnableViewState="true" runat="server" />
    <asp:JButton Icon="ui-icon-key" ID="loginButton" runat="server" Text="Authenticate" OnClick="loginButton_Click" />
    <asp:CustomValidator runat="server" ID="openidValidator" ErrorMessage="Invalid OpenID Identifier" ControlToValidate="openIdBox" EnableViewState="false" OnServerValidate="openidValidator_ServerValidate" />
    <br />
    <asp:Label ID="loginFailedLabel" runat="server" EnableViewState="False" Text="Login failed" Visible="False" />
    <asp:Label ID="loginCanceledLabel" runat="server" EnableViewState="False" Text="Login canceled" Visible="False" />
</p>
</div>

【问题讨论】:

    标签: asp.net javascript jquery


    【解决方案1】:

    我想:

    我必须添加这一行以将对话框附加到表单,因为 jquery 对话框附加到正文:

    $("#openiddialog").parent().appendTo(jQuery("form:first"));
    

    整个脚本现在应该如下所示:

    <script type="text/javascript">
    jQuery(document).ready(function () {
        jQuery("#openiddialog").dialog({
            autoOpen: false,
            width: 600,
            modal: true,
            buttons: { "Cancel": function () {
                $(this).dialog("close");
            }
            }
    });
    $("#openiddialog").parent().appendTo(jQuery("form:first"));
    });
    function expand(obj) {
        $("#<%=openIdBox.ClientID %>").val(obj);
    }
    

    【讨论】:

      【解决方案2】:

      为什么要在文本框 ID 前添加 #?我认为你应该使用:

      function expand(obj) {
          $("<%=openIdBox.ClientID %>").val(obj);
      }
      

      【讨论】:

      • 根据 id 选择一个元素...如果我没记错的话.. 即使您删除了哈希,它也是一个类选择器
      • 对不起, 是什么?
      • Kate:我编写的一个自定义按钮控件,它将 asp:button 呈现为
      猜你喜欢
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      相关资源
      最近更新 更多