ASP.NETにボタンがあります。ユーザーがボタンをクリックしたときに、事前に検証を行いたいので、検証メソッドがtrueを返した場合にのみポストバックが発生します。
私の考えは、ボタンのOnClientClickのロジックを使用することでした。OnClientClick = "return false;"と言うと、ポストバックは返されませんが、trueは返されます。ただし、結果として生じる動作は、jQueryメソッドが返したものであっても、ポストバックを作成しないため、これは機能していません。
現在私は持っています:
マークアップ:
<asp:Button runat="server" ID="ReplyBtn" OnClientClick="return ValidateInput();" OnClick="ReplyBtn_Click" CssClass="btn-large btn-success"
Text="Answer" />
JavaScript:
function ValidateInput() {
var value = stripHtml(CKEDITOR.instances['ReplyBox'].getData()).trim();
var options = {
type: "POST",
url: "../../Services/ForumOperationService.svc/ReplyToPostFeedback",
data: '{"content":"' + value + '"}',
async: false,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
$("#StatusReplyLbl").text(msg.ReplyToPostFeedbackResult);
if (msg.ReplyToPostFeedbackResult) {
return false;
} else {
return true;
}
},
error: function () {
return true;
}
};
$.ajax(options);
return false;
}
function stripHtml(str) {
return $('<div />', { html: str }).text();
}
それで、基本的に、このコードの何が問題になっていますか?また、ポストバックを作成する前に、ボタンの検証を実行するにはどうすればよいですか?