我有一个webForms网站,它使用asp CustomFieldValidator来检查文本框中的文本是否已更改。当它失败时,我希望文本框返回其默认文本。有没有办法做到这一点? 我试过服务器验证码
protected void PasswordChangedValidator_ServerValidate(object source, ServerValidateEventArgs args)
{
if (PASSWORDTb.Text.Contains("●") && PASSWORDTb.Text != "●●●●●●●●")
{
args.IsValid = false;
PASSWORDTb.Text = "●●●●●●●●";
}
else { args.IsValid = true; }
}
和客户端代码:
<asp:CustomValidator ID="PasswordChangedValidator" runat="server"
ErrorMessage="message" ControlToValidate="PASSWORDTb"
ClientValidationFunction="passwordValidate()" Style="color: red;"
OnServerValidate="PasswordChangedValidator_ServerValidate"
SetFocusOnError="true"></asp:CustomValidator>
function passwordValidate() {
var pswdText = doc.getElementById('<%=PASSWORDTb.ClientID %>').value;
if (pswdText.indexOf('●') >= 0) {
if (pswdText == "●●●●●●●●") {
return true;
}
doc.getElementById('<%=PASSWORDTb.ClientID %>').value = '●●●●●●●●';
return false;
}
}
有什么明显的东西我不见了吗?
答案 0 :(得分:0)
感谢@Hugo Yates指出我正确的方向与属性。 我的解决方案是将passwordChanged()添加到我的TextBox的onblur属性。
<asp:TextBox ID="PASSWORDTb" OnBlur="javascript:passwordChanged()"...></asp:TextBox>
<script type="text/javascript">
function passwordChanged(){
if (pswdText.indexOf('●') >= 0) {
if (pswdText != "●●●●●●●●") {
doc.getElementById('<%=PASSWORDTb.ClientID %>').value = '●●●●●●●●';
}
}
</script>