可以进行服务器端和客户端验证

时间:2013-03-11 17:42:46

标签: javascript asp.net c#-4.0 validation

在我的要求中,我需要使用1个编辑器,而且requiredfieldvalidator对此Editor控件不起作用。所以我只需点击一下按钮,就可以通过asp控件验证器通过javascript和其余的asp.net控件来验证这个控件。

我正在尝试通过aspnet服务器端控制和客户端验证通过javascript实现服务器端验证。 我有两个文本框控件和一个提交按钮,如下所示:

<div>
        <asp:TextBox ID="Txt1" runat="server"></asp:TextBox>
        <asp:RequiredFieldValidator ID="RfvTxt1" runat="server" ErrorMessage="*" ForeColor="Red"
            ControlToValidate="Txt1"></asp:RequiredFieldValidator>
        <asp:TextBox ID="Txt2" runat="server"></asp:TextBox>
        <asp:Button ID="btnsubmit" runat="server" OnClick="btnsubmit_Click" Text="Submit" 
        OnClientClick=" return ss();"  />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div> 



 <script src="JS/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        function ss() {
            var script = $("#<%=Txt2.ClientID %>").val();
            if (script == "") {
                alert(1);
                return false;
            }
        }
    </script>

 protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = "dd";
    }
    protected void btnsubmit_Click(object sender, EventArgs e)
    {
        Label1.Text = "ss";
    }

但验证都不起作用。 问题是,当第二个文本框包含文本时。页面回发并运行它事件,即使第一个文本框不包含其文本。  感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

我正在为您的查询提供解决方案。 您必须在客户端验证功能的其他条件下再次启用所有服务器验证。

function ss() 
{
var script = $("#<%=Txt2.ClientID %>").val();
if (script == "") 
{
    alert(1);
    Page_ClientValidate();
    return false;
}
else 
{
    Page_ClientValidate();
}
}

OR

只需将按钮更改为:

protected void btnsubmit_Click(object sender,EventArgs e)     {         if(Page.IsValid)         {             Label1.Text =“ss”;         }     }

答案 1 :(得分:1)

为什么不是2个RequiredFieldValidators,每个TextBox一个?

<div>
        <asp:TextBox ID="Txt1" runat="server"></asp:TextBox>
        <asp:RequiredFieldValidator ID="RfvTxt1" runat="server" ErrorMessage="*" ForeColor="Red"
            ControlToValidate="Txt1"></asp:RequiredFieldValidator>
        <asp:TextBox ID="Txt2" runat="server"></asp:TextBox>
        <asp:RequiredFieldValidator ID="RfvTxt2" runat="server" ErrorMessage="*" ForeColor="Red"
            ControlToValidate="Txt2"></asp:RequiredFieldValidator>
        <asp:Button ID="btnsubmit" runat="server" OnClick="btnsubmit_Click" Text="Submit" />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>

或者,如果您真的想要使用自定义验证,请使用CustomValidator。以下是客户端和服务器端验证的示例:

<div>
        <asp:TextBox ID="Txt1" runat="server"></asp:TextBox>
        <asp:RequiredFieldValidator ID="RfvTxt1" runat="server" ErrorMessage="*" ForeColor="Red"
            ControlToValidate="Txt1"></asp:RequiredFieldValidator>
        <asp:TextBox ID="Txt2" runat="server"></asp:TextBox>
        <asp:CustomValidator id="CustomValidator1"
           ControlToValidate="Txt2"
           ClientValidationFunction="ClientValidate"
           OnServerValidate="ServerValidation"
           ErrorMessage="*"
           ForeColor="Red"
           runat="server"/>
        <asp:Button ID="btnsubmit" runat="server" OnClick="btnsubmit_Click" Text="Submit" />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div> 

<script language="javascript"> 
   function ClientValidate(source, arguments)
   {
        if (arguments.Value == "" ){
            arguments.IsValid = true;
        } else {
            arguments.IsValid = false;
        }
   }
</script>

<script runat="server">
    void ServerValidation(object source, ServerValidateEventArgs args)
    {
      return !String.IsNullOrEmpty(args.Value);
    }
</script>

答案 2 :(得分:0)

您可以使用ValidationGroup将控件与提交按钮绑定 并确保您在Button等于CauseValidation

时使用True属性

修改

document.getElementById('<%=txt2.ClientID%>').value;

试试这个 可能有帮助