Jquery ajaxform 动态表单需要点击两次
Jquery ajaxform requires two clicks for dynamic form
我有一个使用 ajax 动态加载的表单。加载后,我就可以提交表单,以便它重新加载页面。我现在正在尝试 ajax 验证表单,这样我就不必重新加载页面了。我正在使用 malsup 的 ajaxform 插件,但是我无法正确使用这个插件,因为我正在尝试 ajaxify 一个动态加载的表单。目前,使用下面的代码,它要求我提交两次表单才能进行任何更改。换句话说,一旦使用页面上的上一个按钮加载了表单,我就必须单击提交按钮两次才能提交表单。第一次点击后,不会提交表单,每隔一次点击都会提交。我不明白为什么我第一次要提交两次表格。请在下面查看我的代码。
$(document).ready(function() {
var options = {
beforeSubmit: showRequest,
error: showError, // error
success: showResponse // post-submit callback
};
$(document).on('submit', '#send-form', function(event) {
$('#send-form').ajaxForm(options);
return false;
});
});
// pre-submit callback
function showRequest(formData, jqForm, options) {
alert('Please wait...','Please wait...');
return true;
}
// error callback
function showError(er, err, error) {
var currentAlert = $.jAlert('current');
currentAlert.closeAlert();
errorAlert('Error','Try Again Later');
}
// post-submit callback
function showResponse(responseText, statusText, xhr, $form) {
var currentAlert = $.jAlert('current');
currentAlert.closeAlert();
successAlert('Success!', 'Your form has been sent');
}
<form action="" method="post" id="send-form">
<input type="submit" class="submit-btn" name="modal-form" value="submit" />
</form>
我尝试使用 ajaxSubmit 而不是 ajaxForm,因为我知道 ajaxform 实际上并没有提交表单。当我这样做时,表单似乎在第一次点击时提交(所有警报都出现),但实际上没有提交任何内容。如果对此有任何帮助,我将不胜感激。
您要向此处发送什么数据?您要将它们发送到哪里?
而且我想您需要在 onSubmit 函数中添加一个 event.preventDefault
。
我建议使用 $.post() 函数。您可以在此处找到更多信息:https://api.jquery.com/jquery.post/
找出问题所在。我不得不在页面加载时调用 ajaxform,然后提交它。不是提交它然后调用ajaxform。无论如何,这似乎有效。
$(document).ready(function() {
var options = {
type: 'post',
beforeSubmit: showRequest,
error: showError, // error
success: showResponse // post-submit callback
};
$('#send-form').ajaxForm(options);
$('#send-form').live('submit', function (e) {
e.preventDefault();
});
});
// pre-submit callback
function showRequest(formData, jqForm, options) {
return true;
alert('Please wait...');
}
// error callback
function showError(er, err, error) {
var currentAlert = $.jAlert('current');
currentAlert.closeAlert();
errorAlert('Error','Try Again Later');
}
// post-submit callback
function showResponse(responseText, statusText, xhr, $form) {
var currentAlert = $.jAlert('current');
currentAlert.closeAlert();
successAlert('Success!', 'Your form has been sent');
}
<form action="" method="post" id="send-form">
<input type="submit" class="submit-btn" name="modal-form" value="submit" />
</form>
我有一个使用 ajax 动态加载的表单。加载后,我就可以提交表单,以便它重新加载页面。我现在正在尝试 ajax 验证表单,这样我就不必重新加载页面了。我正在使用 malsup 的 ajaxform 插件,但是我无法正确使用这个插件,因为我正在尝试 ajaxify 一个动态加载的表单。目前,使用下面的代码,它要求我提交两次表单才能进行任何更改。换句话说,一旦使用页面上的上一个按钮加载了表单,我就必须单击提交按钮两次才能提交表单。第一次点击后,不会提交表单,每隔一次点击都会提交。我不明白为什么我第一次要提交两次表格。请在下面查看我的代码。
$(document).ready(function() {
var options = {
beforeSubmit: showRequest,
error: showError, // error
success: showResponse // post-submit callback
};
$(document).on('submit', '#send-form', function(event) {
$('#send-form').ajaxForm(options);
return false;
});
});
// pre-submit callback
function showRequest(formData, jqForm, options) {
alert('Please wait...','Please wait...');
return true;
}
// error callback
function showError(er, err, error) {
var currentAlert = $.jAlert('current');
currentAlert.closeAlert();
errorAlert('Error','Try Again Later');
}
// post-submit callback
function showResponse(responseText, statusText, xhr, $form) {
var currentAlert = $.jAlert('current');
currentAlert.closeAlert();
successAlert('Success!', 'Your form has been sent');
}
<form action="" method="post" id="send-form">
<input type="submit" class="submit-btn" name="modal-form" value="submit" />
</form>
我尝试使用 ajaxSubmit 而不是 ajaxForm,因为我知道 ajaxform 实际上并没有提交表单。当我这样做时,表单似乎在第一次点击时提交(所有警报都出现),但实际上没有提交任何内容。如果对此有任何帮助,我将不胜感激。
您要向此处发送什么数据?您要将它们发送到哪里?
而且我想您需要在 onSubmit 函数中添加一个 event.preventDefault
。
我建议使用 $.post() 函数。您可以在此处找到更多信息:https://api.jquery.com/jquery.post/
找出问题所在。我不得不在页面加载时调用 ajaxform,然后提交它。不是提交它然后调用ajaxform。无论如何,这似乎有效。
$(document).ready(function() {
var options = {
type: 'post',
beforeSubmit: showRequest,
error: showError, // error
success: showResponse // post-submit callback
};
$('#send-form').ajaxForm(options);
$('#send-form').live('submit', function (e) {
e.preventDefault();
});
});
// pre-submit callback
function showRequest(formData, jqForm, options) {
return true;
alert('Please wait...');
}
// error callback
function showError(er, err, error) {
var currentAlert = $.jAlert('current');
currentAlert.closeAlert();
errorAlert('Error','Try Again Later');
}
// post-submit callback
function showResponse(responseText, statusText, xhr, $form) {
var currentAlert = $.jAlert('current');
currentAlert.closeAlert();
successAlert('Success!', 'Your form has been sent');
}
<form action="" method="post" id="send-form">
<input type="submit" class="submit-btn" name="modal-form" value="submit" />
</form>