【问题标题】:Server side and client side validation possible可以进行服务器端和客户端验证
【发布时间】:2013-03-11 17:42:46
【问题描述】:

在我的要求中,我需要使用 1 个编辑器,并且 requiredfieldvalidator 不适用于此编辑器控件。因此,我通过 javascript 验证此控件,并通过单击按钮的 asp 控件验证器验证其余的 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";
    }

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

【问题讨论】:

  • ss() 在哪里定义,它包含什么?
  • 先生,我更新了代码
  • 为什么你不对两个文本框使用必填字段验证器...我看不出它为什么不起作用。

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


【解决方案1】:

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

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

只需将按钮点击更改为:

protected void btnsubmit_Click(object sender, EventArgs e) { 如果(页面.IsValid) { Label1.Text = "ss"; } }

【讨论】:

    【解决方案2】:

    为什么不是 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>
    

    【讨论】:

      【解决方案3】:

      您可以使用ValidationGroup 将您的控件与您的提交按钮联系起来 并确保在 Button 上使用 CauseValidation 属性等于 True

      编辑

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

      试试这个 可能有帮助

      【讨论】:

      • 先生,我已经尝试按照您上面所说的进行操作,并且我已经更新了我的最后一期。
      • 嗯,你在这里使用母版页吗?我的意思是你确定你正确定位了你的文本框?
      • 不先生............在我的要求中,我需要使用 1 个编辑器,并且 requiredfieldvalidator 不适用于此编辑器控件。因此,我通过 javascript 验证此控件,并通过单击按钮的 asp 控件验证器验证其余的 asp.net 控件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 2023-04-08
      相关资源
      最近更新 更多