验证失败时如何将aspTextBox恢复为默认值

时间:2016-03-17 16:41:26

标签: c# asp.net

我有一个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;
    }
}

有什么明显的东西我不见了吗?

1 个答案:

答案 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>