我正在用C#开发一个经典的WebForms应用程序,我有一个自定义的aspx页面,用户可以修改他们的数据(电子邮件,密码等等),每个文本框都有一个3文本框和一个RequiredFieldValidator
<asp:ValidationSummary ID="ChangeUserPasswordValidationSummary" runat="server" CssClass="failureNotification"
ValidationGroup="ChangeUserPasswordValidationGroup"/>
我有一个提交按钮:
<asp:Button ID="ChangePasswordPushButton" runat="server" Text="Cambia password" OnClick="ChangePwd_Click" OnClientClick="return ValidatePasswordFields();"
ValidationGroup="ChangeUserPasswordValidationGroup"/>
在这种形式下,当我在转到服务器端'ChangePwd_Click'功能之前点击ChangePasswordPushButton时,如果其中一个文本框为空,我想禁用(客户端)验证器。
这些是我写的客户端功能:
function ValidatePasswordFields() {
var oldpwd = $('#<%=txtCurrentPassword.ClientID %>').val();
if (oldpwd == '') {
setValidators(false);
return true;
} else { setValidators(true);return false; }
}
function setValidators(status) {
ValidatorEnable(document.getElementById('<%= txtCurrentPasswordRequired.ClientID %>'), status);
ValidatorEnable(document.getElementById('<%= ConfirmNewPasswordRequired.ClientID %>'), status);
ValidatorEnable(document.getElementById('<%= NewPasswordRequired.ClientID %>'), status);
return false;
}
问题是此代码始终会回发。
你可以帮帮我吗? 感谢答案 0 :(得分:1)
您的问题出在ValidatePasswordFields中,您在开始时返回true。只需删除它:
function ValidatePasswordFields() {
var oldpwd = $('#<%=txtCurrentPassword.ClientID %>').val();
if (oldpwd == '') {
setValidators(false);
return true;
} else { setValidators(true);return false; }
}