2012-04-09 14 views
0

私はASP.NETでアプリケーションを作成し、JavaScriptを使用してそのフィールドが空であるかどうかを検証しました。その検証関数をASP.NET Button ControlのClientClickイベントと呼び、サーバー側処理のためにonClickイベントを使用します。ASP.NETで異常なJavascriptの動作

ここで私は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; 
} 

は、ここで私は今、私は検証関数としてfalseを返すことを観察したものを

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

ASP.NETコントロールの下で、その関数を呼び出していますサーバー側のメソッド、つまりonclickイベントを実行しますが、trueの戻り値では何も行いません。しかし、私が戻り値を切り替えると、空フィールドの手段は真を返し、空でないフィールドは偽を返します。

私はこのように動作している理由を混同しています。上で書いたように動作すると仮定します。つまり、誤ったリターンでは何も実行せず、真のリターンでサーバ側の処理を実行します。

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

+5

....助け理由だけではなく、検証が.NETでコントロールを使用していませんか? – Shoban

+0

レンダリングされたhtmlを置くことができますか? – ivowiblo

+0

私は、ASP.NETの組み込み検証メカニズムを使用するための他のコメントをサポートしたいと思います。それは自動的にあなたが求める行動を引き起こし、あなたは他の目的のために 'OnClientClick'を使うことができます。検証のためのカスタムjsロジックがある場合、 'ClientValidationFunction'(メモリが私の右に役立つ場合)を介して' CustomValidator'コントロール内にフックすることができます –

答えて

-2

おそらく実際の解決策がありますが、この小さな回避策を実行してOnClientClickプロパティを完全に回避します。

はあなたのボタンを非表示にする:

<input type="button" value="Save" 
onclick="if (validate()) { 
document.getElementById('<%=btn_save_pi.ClientID%>').click(); }" /> 
+1

恐ろしい答え。可能なスパムリンク、起動する。 –

+0

[OK]を、この男のためにOnClientClickプロパティを次にします。それは動作しません。答えはそれを使用しないことです。 – Dudeman3000

0

あなたのコードはFFと同様、IEで私のために完全に正常に動作します:別の "偽" ボタンに、ボタン、スティックに

style="display:none;" 

それでも問題が解決しない場合は、asp.net検証コントロールを使用して問題の少ないアプローチに進むことができます。あなたはまだあなた自身のJavaScriptの検証のために行きたい場合は

しかし、これを使用する:

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

あなたは、検証と空想行くと検証にあなたが望むように作ることができます。 はそれをよりよく理解するために、最後に与えられた例を経るか、これを参照してください。

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

希望これは

関連する問題