0
フォームの送信時にAjaxOptionsを使用して2つの関数を実行しようとしています。ただし、呼び出される関数は1つだけです。私は、フォームが提出されたときに両方を実行したいと思います。Ajaxオプションを使用して2つの関数を呼び出す
@using (Ajax.BeginForm("AddDiagnosis", "Student",
new AjaxOptions(){
OnSuccess = "HandleAddDiagnosisCode",
OnBegin = "return ValidateAddStudentDiagnosisCode(" + @studentId + ")"
}, new
{
id = "AddStudentDiagnosis-" + @studentId,
name = "AddStudentDiagnosis-" + @studentId
}
))
{
、これらが機能している:
は、ここに私のAjaxのオプションである
function ValidateAddStudentDiagnosisCode(id) {
var valid = true;
var msg = "";
var errorPanel = $('#modal-AddStudentDiagnosis-ErrorPanel');
PopulateErrorMessage(errorPanel, msg);
errorPanel.hide();
var diagCode = $('#modal-AddStudentDiagnosis_DiagCode-' + id).val();
if (diagCode === "") {
msg = "You must select a diagnosis code";
valid = false;
}
var sequence = $('#modal-AddStudentDiagnosis_Sequence-' + id).val();
if (sequence === "") {
msg = "You must select a sequence";
valid = false;
}
if (valid == false) {
PopulateErrorMessage(errorPanel, msg);
}
return valid;
}
function HandleAddDiagnosisCode(e) {
alert('test');
var errorPanel = $('#modal-AddStudentDiagnosis-ErrorPanel');
PopulateErrorMessage(errorPanel, '');
var errorMessage = e.ErrorMessage;
if (errorMessage.length > 0) {
PopulateErrorPanel(errorPanel, errorMessage);
}
else {
ClearModal();
// Reload the document view
$('#detailPanel').fadeOut(500, function() {
$(this).empty();
}).fadeIn(250, function() {
$(this).html(e.Html);
BindDocumentEdit();
BindDataTable();
BindDatePickers();
});
}
フォームが送信されたとき、私のテストアラートが呼び出されません。
?アヤックスコールの前に?アヤックスコールの後に? – Shyju
その後、検証フォームを実行し、有効であればハンドル関数を実行します。 – RancorTamer
したがって、ajax呼び出しを行う前にvalidate関数を呼び出して、有効ではなく、ajax呼び出しが完了した後で(サーバーからの応答を受け取った後に)2番目の関数を呼び出したい場合は、Ajax呼び出しを停止しますか? – Shyju