在验证时更改文本框边框和背景失败

时间:2011-10-25 16:54:08

标签: asp.net css textbox

是否可以使用javascript,以便当asp.net验证器失败时(例如输入与正则表达式不匹配),文本框边框和背景颜色会变为红色阴影。我以前见过这个,但我忘记了。

有人可以将我链接到这样的实例吗?

我可以这样做吗?

由于

编辑:

使用此解决方案:

validateField = function(sender, args){        
    //do your validation logic        
    if (!args.IsValid){
        var ctrl = $("#" + sender.controltovalidate);
        if (ctrl){
            ctrl.css({ "background-color" : "#990000", "border" : "1px solid #993300" });
        }
    }
    return args.IsValid;
}

如果我在哪里使用常规的广告,这是正确的方法吗?

validateField = function(sender, args){        
    var regEx=(some regex forumla)
    if (sender.value.search(regEx)==-1)        
        var ctrl = $("#" + sender.controltovalidate);
        if (ctrl){
            ctrl.css({ "background-color" : "#990000", "border" : "1px solid #993300" });
        }
    }
   else
        {
           return args.IsValid;
         }
}

抱歉我缺乏知识,以前从未使用过javascript。还有,是什么:

 return args.IsValid;

结束了吗?

3 个答案:

答案 0 :(得分:1)

您可以使用CustomValidator,如果验证失败,您可以更改客户端验证功能中的边框和背景颜色:

验证功能:

validateField = function(sender, args){        
    //do your validation logic        
    if (!args.IsValid){
        var ctrl = $("#" + sender.controltovalidate);
        if (ctrl){
            ctrl.css({ "background-color" : "#990000", "border" : "1px solid #993300" });
        }
    }
    return args.IsValid;
}

标记:

<asp:TextBox ID="TextBox1" runat="server" />
<asp:CustomValidator ID="CustomValidator1" runat="server" EnableClientScript="true"
    ErrorMessage="Required"
    ClientValidationFunction="validateField" 
    ControlToValidate="TextBox1"
    Display="Dynamic">
</asp:CustomValidator>

答案 1 :(得分:0)

我做过类似的事情

    Private Sub HighlightInvalidFields()

    For Each validator As IValidator In Page.Validators
        If TypeOf validator Is BaseValidator Then
            If CType(validator, BaseValidator).IsValid = False Then

                Dim controlId As String = CType(validator, BaseValidator).ControlToValidate
                Dim control As WebControl = TryCast(Me.FindControlRecursive(controlId), WebControl)

                If control IsNot Nothing Then
                    control.Style.Add("background-color", "#B85449")
                End If

            End If
        End If
    Next

End Sub

我从page_prerender

中调用它
    Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
    If Page.IsPostBack Then HighlightInvalidFields()
End Sub

答案 2 :(得分:0)

public class ChangeColorPage : Page {
public Label lblZip;
public RegularExpressionValidator valZip;

protected override void OnLoad(EventArgs e) {     
    Page.Validate();       
    lblZip.ForeColor = valZip.IsValid? Color.Black : Color.Red;
    }               
}


<asp:Label id=lblZip runat=server Text="Zip Code:"/> 
<asp:TextBox id=txtZip runat=server OnChange="txtZipOnChange();" /></asp:TextBox><br>
<asp:RegularExpressionValidator id=valZip runat=server ControlToValidate=txtZip ErrorMessage="Invalid Zip Code" ValidationExpression="[0-9]{5}" /><br>

<script language=javascript>
function txtZipOnChange() {
   // Do nothing if client validation is not active
   if (typeof(Page_Validators) == "undefined")  return;
   // Change the color of the label
   lblZip.style.color = valZip.isvalid ? "Black" : "Red";
}
</script>

http://msdn.microsoft.com/en-us/library/aa479045.aspx