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 が返された場合はサーバー側の処理を実行します。
これを説明してください。それは、さらなるアプリケーションの開発にも役立ちます。