PostBackUrl を持つボタンを含むマスター ページがあります。jquery を使用してボタンに検証を追加し、フォームが有効でない場合は false を返します。
ボタン:
<asp:Button ID="btnSearch" runat="server" Text="Search" CssClass="search-button"
PostBackUrl="/some/rewriten/url" />
ジャバスクリプト:
<script type="text/javascript">
$(function () {
$(".search-button").click(function (e) {
if (!ValidateForm()) {
return false;
//e.preventDefault();
}
});
});
</script>
ユーザーが連絡先情報を残すことができるフォームを含む別のページもあります。このフォームには通常のボタンがあります。
<asp:Button ID="btnSend" runat="server" Text="Send"
CssClass="button" OnClick="btnSend_Click" />
最初のボタンを使用してフォームが有効でない場合、エラー メッセージが出力され、ユーザーは PostBackUrl ページにリダイレクトされません。この後、他のフォームの btnSend ボタンをクリックすると、ポストバック URL が設定され、以前から保存されているかのように、ユーザーは PostBackUrl ページにリダイレクトされます。
なぜこれが起こっているのか、この問題を解決する方法はありますか? これを行うとおそらく問題が解決することをどこかで読みOnClientClick="if(!ValidateForm())? return false;"
ましたが、OnClientClick を追加することは私のシナリオでは受け入れられません。検証用のクリック ハンドラーを JavaScript で追加する必要があります。