javascript - 尝试使用 ASP 隐藏值和 javascript 禁用 CSS 按钮

标签 javascript asp.net

我正在使用 ASP.NET PasswordRecovery 方法,并有几个 CSS 按钮来提交表单或取消请求。

我还获取用户的电子邮件地址以传递给PasswordRecovery方法的successtext值,将ASP隐藏值设置为success,然后尝试使用javascript根据该值禁用按钮。

问题是这个隐藏字段值似乎在初始页面加载时设置为“成功”,即使在查看渲染页面的源代码时显示没有值。

可能有更好的方法,但我尝试了几种不同的方法,并且这是成功的,我无法更改按钮的 View 状态。

<script runat="server">
 protected void resetuserpassword_SendingMail(object sender, MailMessageEventArgs e)
{
    e.Message.IsBodyHtml = true;
    e.Message.Subject = "Password Assistance";
    TextBox txtUserName = (TextBox)resetuserpassword.UserNameTemplateContainer.FindControl("UserName");
    string UserEmailID = Membership.GetUser(txtUserName.Text.Trim()).Email;
    resetuserpassword.SuccessText = "Password sent to ";
    resetuserpassword.SuccessText += UserEmailID;
    ValueHiddenField.Value = "Success";

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolderArea" Runat="Server">
    <script type="text/javascript">
    window.onload = disableButtons;
    function disableButtons() {
        var element =  document.getElementById('ContentPlaceHolderArea_ValueHiddenField');
        if (typeof(element) != 'undefined' && element != null) {
                if (document.getElementById('ContentPlaceHolderArea_ValueHiddenField').value = 'Success') {
                    var submitBtnElement = document.querySelector("#submitBtn");
                    var cancelBtnElement = document.querySelector("#cancelBtn");
                    submitBtnElement.style.display = "none";
                    cancelBtnElement.style.display = "none";
                }
        }
    }
    function clickSubmit() {
        document.getElementById("ContentPlaceHolderArea_resetuserpassword_UserNameContainerID_SubmitButton").click();
    }
    function clickCancel() {
        window.location.replace("~/Login.aspx");
    }
</script>
    <asp:hiddenfield id="ValueHiddenField"    value=""    runat="server"/>
    <asp:hiddenfield id="ValueHiddenField"    value=""    runat="server"/>
    <asp:PasswordRecovery ID="resetuserpassword" runat="server" 
        MailDefinition-BodyFileName="~/ResetPasswordEmailTemplate.html" 
        OnSendingMail="resetuserpassword_SendingMail" 
        successtext="Password sent to email address on record."
        Width="300px" Font-Names="Arial" Font-Size="Small" UserNameTitleText="" >
        <InstructionTextStyle Font-Names="Arial" Font-Size="Small" />
        <MailDefinition BodyFileName="~/ResetPasswordEmailTemplate.html"></MailDefinition>

        <UserNameTemplate>
            <div><asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName" style="display:none;"></asp:Label></div>
            <div style="font: arial, verdana, sans-serif;font-size: 13px;padding-bottom: 5px;font-weight: bold;">Please Enter your Username</div>
            <div><asp:TextBox ID="UserName" runat="server" style="width: 180px;"></asp:TextBox></div>
            <div><asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" ErrorMessage="User Name is required." ToolTip="User Name is required." ValidationGroup="PasswordRecovery1">*</asp:RequiredFieldValidator></div>
            <div><asp:Literal ID="FailureText" runat="server" EnableViewState="False"></asp:Literal></div>
            <div style="display: inline;" ><asp:Button ID="SubmitButton" runat="server" CommandName="Submit" Text="Submit" ValidationGroup="PasswordRecovery1" style="display: none;" /></div> 
        </UserNameTemplate>
    </asp:PasswordRecovery>
        <div>
        <div id="submitBtn" onclick="clickSubmit()">Submit</div>
        <div id="cancelBtn" onclick="clickCancel()">Cancel</div>    
    </div>
</asp:Content>

最佳答案

您的 JavaScript if 语句正在将值“成功”分配给隐藏字段(单个等号)。

if (document.getElementById('ContentPlaceHolderArea_ValueHiddenField').value = 'Success') {
...
}

将其更改为(双等号):

if (document.getElementById('ContentPlaceHolderArea_ValueHiddenField').value == 'Success') {
...
}

关于javascript - 尝试使用 ASP 隐藏值和 javascript 禁用 CSS 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23788162/

相关文章:

asp.net - 为什么页脚项目不包含在 Repeater.Items 中?

javascript - JQuery .css ("color", "wanted_color") 不工作,提醒正确的颜色

javascript - 你如何观察 Knockout 中的 JavaScript 哈希表?

javascript - 纯javascript拉动刷新

javascript - 在页面完全加载之前禁用回发控件的最干净的方法是什么?

ASP.NET MVC : Returning large amounts of data from FileResult

javascript - 如何将 JavaScript 结果从本地文件发送到 VBA Webbrowser 控件

javascript - 如何按范围移动文本

c# - 如何更新 EF 中的相关实体(代码优先)

asp.net - 如何按字母顺序显示 row_number