1

嘿伙计们,我已经尽可能多地看了,但我找不到答案,我正在创建一个管理界面,该界面到处都有表格,我想为所有表格使用相同的 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');">

现在我的问题是......有没有更简单的方法来做到这一点,比如不必每次都为 submitForm() 函数提供表单 ID?

提前致谢!

4

2 回答 2

1

是的,为所有表单定义一个公共类,并使用

$(".form_class").submit(function() {

  //stuff that gets executed on form submission ...

  return result;
})

并转储内联“onsubmit”。一般来说,这样做也更干净,因为它将视图与行为分开。

于 2012-06-28T02:59:44.123 回答
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;

});
于 2012-06-28T03:35:49.070 回答