2013-03-11 124 views
0

在我的要求中,我需要使用1编辑器和requiredfieldvalidator不能在此编辑器控件上工作。所以我通过单击一个按钮通过asp控件验证器通过javascript和asp.net控件的其余部分来验证此控件。服务器端和客户端验证可能

我试图通过aspnet通过aspnet服务器端控制和客户端验证来实现服务器端验证。 我有两个文本框控件和一个如下提交按钮:

<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"; 
    } 

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

+0

定义了ss(),它包含了什么? – robertc 2013-03-11 17:47:08

+0

先生我更新了代码 – 2013-03-11 17:50:11

+1

为什么不使用requiredfield验证器为两个文本框......我看不出为什么它不会工作的原因。 – 2013-03-11 18:36:38

回答

0

您可以使用ValidationGroup与你配合你的控件提交按钮 ,确保您在巴顿等于True

编辑使用CauseValidation属性

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

试试这个 可以帮助

+0

先生,我已经尝试做你上面说过的事情,我已经更新了我的最后一期。 – 2013-03-11 18:01:07

+0

好吧,您正在使用母版页吗?我的意思是你确定你正确地定位你的文本框? – Mido 2013-03-11 18:08:22

+0

没有先生..........在我的要求中,我需要使用1编辑器和requiredfieldvalidator不适用于此编辑器控件。所以我通过单击一个按钮通过asp控件验证器通过javascript和asp.net控件的其余部分来验证此控件。 – 2013-03-11 18:11:45

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

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

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

OR

只是改变按钮点击为:

保护无效btnsubmit_Click(对象发件人,EventArgs的) { 如果(Page.IsValid) { Label1.Text =“ SS“; } }

相关问题