简体   繁体   English

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

[英]Server side and client side validation possible

in my requirement, i am require to use 1 editor and requiredfieldvalidator doesn't work on this Editor control. 在我的要求中,我需要使用1个编辑器,并且requiredfieldvalidator在此Editor控件上不起作用。 So i am validating this control through javascript and rest of the asp.net control through asp controls validator on a single click of a button. 所以我通过单击一次按钮就可以通过javascript验证此控件,并通过asp控件验证器来验证其余的asp.net控件。

I am trying to implement server side validation through aspnet server side control and client side validation through javascript. 我试图通过aspnet服务器端控件实现服务器端验证,并通过javascript来实现客户端验证。 i have two textbox control and one submit button as follows : 我有两个文本框控件和一个提交按钮,如下所示:

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

but both the validation doesn't work. 但两种验证均无效。 problem is, when the second textbox contains the Text. 问题是,当第二个文本框包含文本时。 The page postback and runs it event even if the first Textbox doesn't contain its text. 页面回发并运行它事件,即使第一个文本框不包含其文本也是如此。 Thanks for any assistance. 感谢您的协助。

I am presenting the solution for your query. 我正在为您的查询提供解决方案。 You have to just enable all server validation again in else condition of clientside validation function. 您必须在客户端验证功能的其他情况下再次启用所有服务器验证。

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

OR 要么

just change the button click as : 只需将按钮单击更改为:

protected void btnsubmit_Click(object sender, EventArgs e) { if (Page.IsValid) { Label1.Text = "ss"; 受保护的无效btnsubmit_Click(对象发送者,EventArgs e){如果(Page.IsValid){Label1.Text =“ ss”; } } }}

Why not 2 RequiredFieldValidators, one for each TextBox? 为什么不使用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>

Or, if you REALLY want to use custom validation, use CustomValidator . 或者,如果您确实要使用自定义验证,请使用CustomValidator Here is example for both client and server side validation: 这是客户端和服务器端验证的示例:

<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>

You may use ValidationGroup to tie your controls with you submit button and ensure that you use CauseValidation attribute on Button equal True 您可以使用ValidationGroup将控件与“提交”按钮绑定在一起,并确保在Button上使用CauseValidation属性等于True

EDIT 编辑

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

try this may help 试试这个可能有帮助

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM