JQuery:重用提交功能

时间:2012-06-28 02:56:13

标签: javascript jquery ajax forms dynamic

嘿伙计们,我尽可能多地看,我找不到答案,我正在创建一个管理界面,其中包含各种形式的表格,我想为所有这些使用相同的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()函数?

提前致谢!

2 个答案:

答案 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;

});