0

在我的要求中,我需要使用 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";
    }

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

4

3 回答 3

2

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

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) { if (Page.IsValid) { Label1.Text = "ss"; } }

于 2013-03-12T09:14:53.227 回答
1

为什么不是 2 个RequiredFieldValidators,每个文本框一个?

<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>
于 2013-03-11T18:45:24.807 回答
0

您可以使用ValidationGroup将控件与提交按钮绑定,并确保您CauseValidation在按钮上使用属性等于True

编辑

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

试试这个可能会有所帮助

于 2013-03-11T17:51:16.707 回答