0

私の要件では、1 つのエディターを使用する必要があり、requiredfieldvalidator はこのエディター コントロールでは機能しません。したがって、ボタンを1回クリックするだけで、javascriptを介してこのコントロールを検証し、aspコントロールバリデーターを介してasp.netコントロールの残りを検証しています。

aspnetサーバー側コントロールによるサーバー側検証とjavascriptによるクライアント側検証を実装しようとしています。次のように、2 つのテキスト ボックス コントロールと 1 つの送信ボタンがあります。

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

しかし、両方の検証は機能しません。問題は、2 番目のテキスト ボックスにテキストが含まれている場合です。最初の Textbox にテキストが含まれていない場合でも、ページはポストバックしてイベントを実行します。ご協力ありがとうございます。

4

3 に答える 3

2

私はあなたの質問に対する解決策を提示しています。クライアント側の検証機能の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){if(Page.IsValid){Label1.Text = "ss"; }}

于 2013-03-12T09:14:53.227 に答える
1

各 TextBox に 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、Button equal の属性を使用するようにすることができますTrue

編集

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

これを試してみてください

于 2013-03-11T17:51:16.707 に答える