嘿伙计们,我尽可能多地看,我找不到答案,我正在创建一个管理界面,其中包含各种形式的表格,我想为所有这些使用相同的jquery代码,我有一些代码可以完成工作,但我想知道是否有更有效的方法来完成它。这是代码
function submitForm( formname )
{
$.ajax
({
type:'POST',
url: 'session.php',
data: $(formname).serialize(),
success: function(response)
{
if( $('#message_box').is(":visible") )
{
$('#message_box_msg').html ('')
$('#message_box').hide();
}
$('#message_box').slideDown();
$('#message_box_msg').html (response);
}
});
return false;
}
现在我的表单看起来像这样:
<form id="adminForm" action="session.php" method="post" onsubmit="return submitForm('#adminForm');">
现在我的问题是......有没有更简单的方法来做到这一点,比如每次都不需要提供带有表单id的submitForm()函数?
提前致谢!
答案 0 :(得分:1)
是的,为所有表单定义一个公共类,并使用
$(".form_class").submit(function() {
//stuff that gets executed on form submission ...
return result;
})
并转储内联“onsubmit”。一般来说这样做也更清晰,因为它将视图与行为区分开来。
答案 1 :(得分:1)
您可能希望将处理程序委托给页面中的文档或其他永久资产,以便考虑任何加载了ajax的表单。这将取代您的内联onsubmit
$(document).on('submit','form', function(){
var allowSubmit=false,
noSubmitMessage="Can't submit", /* can change message in various places in following code depending on app*/
$form=$(this);/* cache jQuery form object */
if( $form.hasClass('doValidation')){
/* class specific code to run*/
allowSubmit = validationFunction();
}
if( allowSubmit){
var data=$form.serialize()
/* do ajax*/
}else{
/* user feedback*/
alert( noSubmitMessage);
}
return false;
});