submitHandler 不适用于外部 js
submitHandler is not working with external js
我必须处理 jsp 中未保存场景的更改。我有一个 jsp 表单和两个外部 js 文件。
1) 当我点击表单内的保存按钮时,工作正常。
2) 如果我有 alert.js 代码作为 JSP 的一部分作为内联脚本,工作正常。
3) 如果我外部化 alert.js 并将此 js 作为导入的一部分包含在内,它将进入 app.js 中的 submit_form() 函数。但是 submitHandler 没有被执行。
1) Jsp形式
I have form with inline js click event like below
//submit form with validation
$('button:submit').click(function() {
submit_form('#name', '#siteId', '${add}', '${view}', 'Site');
});
<form:form id="form" action="${save}" commandName="site" cssClass="form-horizontal" data-toggle="validator">
.
.
.
.
<button type="submit" class="btn btn-primary" disabled><spring:message code="form.button.site.save"/></button>
</form:form>
app.js
function submit_form(name, page_id, $add_url, $view_url, page_name) {
$form.validate({
.
.
submitHandler: function(form) {
.
.
$.post($form.attr('action'), $form.serialize(), function(response) {
});
}
});
alert.js
$(document).ready(function() {
//unsaved alert section
var unsaved = false;
$(document).on('change', ':input', ':select', function() { //triggers change in all input/select fields including text type
unsaved = true;
});
$('a.form-done').click(function() {
var $this = $(this);
if(unsaved === true) {
var $modal = $('#unsaveModal');
$modal.find(".modal-title").text("Unsaved Changes");
$modal.find(".modal-body span").html("Changes have not been saved. Do you want to save changes?");
$modal.find('.modal-footer .btn-warning').attr('href', $this.attr('href'));
$modal.modal('show');
return false;
} else {
return;
}
});
$('button:submit').click(function() {
unsaved = false;
});
$('#unsaveModal .modal-footer .btn-primary').click(function() {
$('button:submit').prop('disabled', true);
$('#form').submit();
$('#unsaveModal').modal('hide');
});
});
function submit_form(name, page_id, $add_url, $view_url, page_name) {
$form.validate({
....
submitHandler: function(form) {
....
}
});
....
.validate()
方法仅用于初始化表单上的插件,不应放在click
处理程序,永远不会在 submit
处理程序中。该插件已经在捕获 click
并中断 submit
事件。将它放在 submit
处理程序中会破坏它,因为在调用插件初始化之前提交已经发生。
$(document).ready(function() {
$form.validate({
....
submitHandler: function(form) {
// ajax here
....
}
});
....
我必须处理 jsp 中未保存场景的更改。我有一个 jsp 表单和两个外部 js 文件。
1) 当我点击表单内的保存按钮时,工作正常。
2) 如果我有 alert.js 代码作为 JSP 的一部分作为内联脚本,工作正常。
3) 如果我外部化 alert.js 并将此 js 作为导入的一部分包含在内,它将进入 app.js 中的 submit_form() 函数。但是 submitHandler 没有被执行。
1) Jsp形式
I have form with inline js click event like below
//submit form with validation
$('button:submit').click(function() {
submit_form('#name', '#siteId', '${add}', '${view}', 'Site');
});
<form:form id="form" action="${save}" commandName="site" cssClass="form-horizontal" data-toggle="validator">
.
.
.
.
<button type="submit" class="btn btn-primary" disabled><spring:message code="form.button.site.save"/></button>
</form:form>
app.js
function submit_form(name, page_id, $add_url, $view_url, page_name) {
$form.validate({
.
.
submitHandler: function(form) {
.
.
$.post($form.attr('action'), $form.serialize(), function(response) {
});
}
});
alert.js
$(document).ready(function() {
//unsaved alert section
var unsaved = false;
$(document).on('change', ':input', ':select', function() { //triggers change in all input/select fields including text type
unsaved = true;
});
$('a.form-done').click(function() {
var $this = $(this);
if(unsaved === true) {
var $modal = $('#unsaveModal');
$modal.find(".modal-title").text("Unsaved Changes");
$modal.find(".modal-body span").html("Changes have not been saved. Do you want to save changes?");
$modal.find('.modal-footer .btn-warning').attr('href', $this.attr('href'));
$modal.modal('show');
return false;
} else {
return;
}
});
$('button:submit').click(function() {
unsaved = false;
});
$('#unsaveModal .modal-footer .btn-primary').click(function() {
$('button:submit').prop('disabled', true);
$('#form').submit();
$('#unsaveModal').modal('hide');
});
});
function submit_form(name, page_id, $add_url, $view_url, page_name) {
$form.validate({
....
submitHandler: function(form) {
....
}
});
....
.validate()
方法仅用于初始化表单上的插件,不应放在click
处理程序,永远不会在 submit
处理程序中。该插件已经在捕获 click
并中断 submit
事件。将它放在 submit
处理程序中会破坏它,因为在调用插件初始化之前提交已经发生。
$(document).ready(function() {
$form.validate({
....
submitHandler: function(form) {
// ajax here
....
}
});
....