0

私はいくつかの検証コントロールを備えたasp.net Webを持っています:

<div class="form-row">
     <label>Email</label>
            <asp:TextBox ID="txtUserName1" runat="server" onchange="validate(this)">    </asp:TextBox>
            <asp:RequiredFieldValidator ID="reqUserName1" runat="server" ControlToValidate="txtUserName1"
                ErrorMessage="- The email address field is required" Text="*" CssClass="error_star" Width="10px" ValidationGroup="Register"></asp:RequiredFieldValidator>
            <asp:RegularExpressionValidator ID="RegularExpressionValidator2" CssClass="error_star" runat="server" ErrorMessage="- Invalid Email Address" Text="*"
                        ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="txtUserName1"
                        ValidationGroup="Register"></asp:RegularExpressionValidator> 
        </div>

フォームを送信するボタンがあります

<asp:Button ID="cmdSubmit" runat="server" Text="Create Account" CssClass="small-button"
            ValidationGroup="Register" CausesValidation="true" OnClientClick="validateForm()" OnClick="cmdSubmit_Click" />

初めてボタンを押すと、クライアント側の検証が実行され、validateForm() メソッドはヒットしません。その後、送信ボタンをクリックすると、カスタム検証が正常に機能します。

カスタム JavaScript をクライアント側の検証にアタッチするにはどうすればよいですか?

ここにJavaScript

function validateForm() {
        $("input[type=text], input[type=password]", "#registerForm").each(function () {
            validate(this)
        });
    }

    function validate(control) {
        // Change the colour of the border
        for (var i = 0; i < control.Validators.length; i++) {
            if (!control.Validators[i].isvalid) {
                control.style.border = "1px solid red"
                return;
            }
        }
        control.style.border = "1px solid #E1D7CE"

    }
4

3 に答える 3

1

ページが検証されていなかったため、JavaScript は機能していましたが、すべてのコントロールが有効であると考えられたため、これを追加しました

if (!Page_ClientValidate("Register")) {
            Page_ClientValidate("Register")
        }

ページを検証します。

于 2011-03-29T15:31:25.797 に答える
0

1- CustomValidator を使用します。したがって、検証ロジックはすべて JavaScript コードに存在します。たとえば、12 を超える数の TextBox を検証するとします。JavaScript コードは次のようになります。

     function Validate(src, eventargs)
        {
          var control = Document.GetElementByID(src);
          if(control.value > 12)
           eventargs.IsValid = true;

    else 
    eventargs.IsValid = false;


        }

2- ="Validate" (JavaScript 関数) に設定された CustomValidator の ClientValidationFunctionProperty を使用します。

ポストバックを実行しようとすると、Page.Validators コレクションが評価されるため、CustomValidator

于 2011-03-30T06:32:31.087 に答える
0

カスタムバリデーターを使用できます

http://asp.net-tutorials.com/validation/custom-validator/

それらは他のasp.netバリデーターと同じように機能し、検証を処理してIsValidフラグを設定する関数を作成することを受け入れます。これにより、ポストバックの発生が許可/防止されます。

于 2011-03-29T14:33:00.373 に答える