0

ASP.NET でアプリケーションを作成し、JavaScript を使用してフィールドが空かどうかを検証しました。ASP.NET ボタン コントロールの検証関数 onClientClick イベントを呼び出し、サーバー側の処理に onClick イベントを使用します。

ここでは、javascript: 検証関数を囲んでいます。

function validate() {


    if (document.getElementById("<%=txt_msn.ClientID%>").value == "") {
        alert("Membership number can not be blank; Fill all fields marked as *");
        document.getElementById("<%=txt_msn.ClientID%>").focus();
        return false;
    }
 return true;
}

ここでは、ASP.NET コントロールでその関数を呼び出しています。

<asp:Button ID="btn_save_pi" runat="server" 
Text="Save" OnClientClick="return validate()" OnClick="btn_save_pi_click" />

検証関数がfalseを返すと、サーバー側のメソッド、つまりonclickイベントを実行しますが、trueを返すと何もしません。しかし、戻り値を切り替えると、空のフィールドがtrueを返し、空でないフィールドがfalseを返すことを意味し、正常に動作します。

なぜそのように振る舞っているのか、私は混乱しています。上で書いたように動作すると仮定します。つまり、false が返された場合は何もせず、true が返された場合はサーバー側の処理を実行します。

これを説明してください。それは、さらなるアプリケーションの開発にも役立ちます。

4

2 に答える 2

0

あなたのコードは、IEでもFFでも問題なく動作します。

したがって、それでも問題が発生する場合は、asp.net 検証コントロールを使用して問題の少ないアプローチに進むことができます。

ただし、独自の JavaScript 検証を行いたい場合は、次のようにします。

http://docs.jquery.com/Plugins/Validation

バリデーションに凝って、好きなようにバリデーションを行うことができます。よりよく理解するには、最後に示した例を参照するか、次を参照してください。

http://jquery.bassistance.de/validate/demo/

お役に立てれば....

于 2012-04-09T06:30:36.367 に答える
-2

したがって、実際の解決策があるかもしれませんが、OnClientClick プロパティを完全に回避するために、この小さな回避策を実行するだけです。

ボタンを非表示にする:

style="display:none;"

ボタンの横に、別の「偽の」ボタンを貼り付けます。

<input type="button" value="Save" 
onclick="if (validate()) { 
document.getElementById('<%=btn_save_pi.ClientID%>').click(); }" />
于 2012-04-09T04:34:07.217 に答える