调用另一个jQuery的功能,如果确认是真的
问题描述:
我试图调用另一个jQuery的功能,如果确认是真的,下面的代码:调用另一个jQuery的功能,如果确认是真的
jQuery("#adminForm_1").submit(function() {
var empty = false;
jQuery(":input", "#adminForm_1").each(function() {
empty = (jQuery(this).val() == "") ? true : empty;
});
if (empty) {
if (confirm('You have not filled out all of the fields, do you wish to continue?')) {
jQuery("#adminForm_1").validationEngine({
ajaxSubmit: true,
ajaxSubmitFile: "/index.php?option=com_database&view=tripdetails&Itemid=12&client=1&task=save",
ajaxSubmitMessage: "Client Trip Details Saved",
inlineValidation: false,
success: false,
failure: function() {}
});
} else {
return false;
};
}
});
^^上面的代码不工作,但你会看到我想要做的..
答
您需要防止的形式,这是它的传统方式提交到服务器上浏览器的默认操作。无论return false
在您提交处理程序结束,或将e.preventDefault()
开头:
jQuery("#adminForm_1").submit(function (e) {
e.preventDefault();
...
或:
jQuery("#adminForm_1").submit(function() {
var empty = false;
jQuery(":input", "#adminForm_1").each(function() {
empty = (jQuery(this).val() == "") ? true : empty;
});
if (empty) {
if (confirm('You have not filled out all of the fields, do you wish to continue?')) {
...
});
}
}
return false;
});
从执行 默认阻止浏览器行动。使用 isDefaultPrevented知道这种方法是否 曾经被称为(即 事件对象)的方法。
由于作为边注return false
具有如preventDefault
同样的效果,再加上它停止事件的冒泡到父元素。 jQuery的实现机制在stopPropagation方法中。换句话说,return false
= e.preventDefault + e.stopPropagation
答
你不停止“正常”从传播事件提交 - 尝试.validationEnginge()
方法之后加入return false
(或者移动它的if
块):
jQuery("#adminForm_1").submit(function() {
var empty = false;
jQuery(":input", "#adminForm_1").each(function() {
empty = (jQuery(this).val() == "") ? true : empty;
});
if (empty) {
if (confirm('You have not filled out all of the fields, do you wish to continue?')) {
jQuery("#adminForm_1").validationEngine({
ajaxSubmit: true,
ajaxSubmitFile: "/index.php?option=com_database&view=tripdetails&Itemid=12&client=1&task=save",
ajaxSubmitMessage: "Client Trip Details Saved",
inlineValidation: false,
success: false,
failure: function() {}
});
}
return false;
}
});
甚至
jQuery("#adminForm_1").submit(function() {
var empty = false;
jQuery(":input", "#adminForm_1").each(function() {
empty = (jQuery(this).val() == "") ? true : empty;
});
if (empty) {
if (confirm(...)) {
jQuery("#adminForm_1").validationEngine({ ... });
}
}
return false;
});
会发生什么事,当你运行它? – karim79 2009-09-24 05:26:36
它刷新页面,并在FF虽然不叫.validationEngine素文字..没有错误.. – SoulieBaby 2009-09-24 05:27:52
在没有JavaScript错误.. :) – SoulieBaby 2009-09-24 05:34:44