将您的 onClick 代码放在与 onSumbit 代码相同的函数中。
更新
在您的onClick
代码结束时return false;
,这会停止事件的正常传播并停止onSubmit
触发事件。因此,如果您希望提交按钮提交表单,请return false;
从其onClick
处理程序中删除。
当您单击提交按钮时,您将在按钮上触发一个click
事件,并submit
在该按钮嵌套的表单上触发一个事件(除非您使用类似的东西停止事件的传播return false;
)。
所以你真的只需要一个submit
事件处理程序来完成你当前的两个处理程序的工作。
此外,由于您的页面中似乎包含 jQuery Core,您可以像这样附加事件处理程序:
$(function () {
$('#form-id').on('submit', function () {
var $this = $(this);//$this refers to the form that is being submitted
jQuery.facebox({
ajax : 'wishlist.php?emailme=true&name=' + $this.find('#name').val() + '&country=' + $this.find('#country').val() + '&email=' + $this.find('#email').val() + '&department=' + $this.find('#department').val()
});
//now we run your normal onSubmit code and return it's return value of this event handler
return formCheck(this);
});
});
如果您将整个表单发送到jQuery.facebox
函数,那么您可以使用 jQuery 的.serialize()
函数来创建必要的查询字符串:
$(function () {
$('#form-id').on('submit', function () {
jQuery.facebox({
ajax : 'wishlist.php?' + $(this).serialize()
});
return formCheck(this);
});
});
这是一个演示:http: //jsfiddle.net/vAFfj/
文档.serialize()
:http ://api.jquery.com/serialize
请注意,这.on()
是 jQuery 1.7 中的新功能,在这种情况下与.bind()
旧版本相同。
更新
如果你想formCheck()
在运行facebox
插件之前检查函数的返回值,那么你可以这样做:
$(function () {
$('#form-id').on('submit', function () {
//check if the form data is valid
if (formCheck(this) === true) {
//if the form data is valid then run the facebox plugin
jQuery.facebox({
ajax : 'wishlist.php?' + $(this).serialize()
});
//also return true to stop running this function
return true;
}
//if the form data is not valid then return false to stop the submission of the form
return false;
});
});