У меня есть две кнопки (сохранить, опубликовать), определенные в моей форме. Если я нажимаю «Сохранить», а затем «публиковать», кнопка публикации не работает. Проблема здесь в том, что функция сохранения работает нормально, как ожидалось. Но когда вы нажимаете «публиковать», то получается, что он пытается получить форму и, скорее, validate
форму, которая определяется под функцией «publish», она переходит к функции проверки функции «save» и дальнейшему процессу. Мне хотелось бы знать, почему это пропускает это и переходит к процедуре проверки функции «сохранить»?
Образец кода;
Форма:
<form class="form-horizontal" method="POST" id="manage_form">
<div class="form-actions" id="saveButtons">
<button class="btn btn-primary" id="save"/>save</button>
<% if (outputs.isPermitted) { %>
<a class="btn btn-info" id="publish">Publish</a>
<% } %>
</div>
</form>
Jquery
// cache var to eliminate unnecessary re-querying
вар $ manageForm = $ ('# manage_form');
$('#save').click(function (e) {
var v = $("#manage_form").validate({
submitHandler: function(form) {
if(!validate_tiers()){
return false;
}
var designer = APIDesigner();
$('#swagger').val(JSON.stringify(designer.api_doc));
$('#saveMessage').show();
$('#saveButtons').hide();
$(form).ajaxSubmit({
success:function(responseText, statusText, xhr, $form) {
//............
});
$("#manage_form").submit();
});
$('#publish').click(function(e){
alert('xxx');
e.preventDefault();
var v = $("#manage_form").validate({
submitHandler: function(form) {
if(!validate_tiers()){
return false;
}
var designer = APIDesigner();
$('#swagger').val(JSON.stringify(designer.api_doc));
$('#saveMessage').show();
$('#saveButtons').hide();
$(form).ajaxSubmit({
success:function(responseText, statusText, xhr, $form) {
$('#saveMessage').hide();
$('#saveButtons').show();
if (!responseText.error) {
$("body").trigger("api_saved");
} else {
if (responseText.message == "timeout") {
if (ssoEnabled) {
var currentLoc = window.location.pathname;
if (currentLoc.indexOf(".jag") >= 0) {
location.href = "index.jag";
} else {
location.href = 'site/pages/index.jag';
}
} else {
jagg.showLogin();
}
} else {
jagg.message({content:responseText.message,type:"error"});
}
}
}, dataType: 'json'
});
}
});
alert('zzz');
$manageForm.submit();
});
вы используете ' $ ("# manage_form"). submit(); 'в' # publish' click handle r, поэтому форма отправляется на клике '# publish'. –
ваши проверки работают нормально, просто вызовите '$ (" # manage_form "). Submit();' как только проверки возвращают true –
UM, не следует, чтобы строка отправки находилась внутри метода submitHandler используемого вами модуля проверки. – epascarello