3

我试图根据按下哪个提交按钮来触发两个单独的函数。当我单击“submit1”时,控制台日志中出现“openMailer_1”,但是当我单击“submit2”时,“openMailer_1”再次出现,而不是“openMailer_2”。知道我在这里做错了什么吗?

$('*[id^=submit]').live('click', function() {

  var id = $(this).attr('id').slice(-1);
  console.log(id);  

  $('#result_form').validate({
    invalidHandler: function(form) { 
    //
    },              
    submitHandler: function(form) {             
      openMailer['openMailer_' + id](); 
    }
  });
});

var openMailer = {
  openMailer_1: function() {
    console.log('openMailer_1');    
  },

  openMailer_2: function() {
    console.log('openMailer_2');
  }
}


<form id="result_form" action="" method="post"> 
  <input type="submit" name="btn_send" id="submit1" value="submit1" />
  <input type="submit" name="btn_send" id="submit2" value="submit2" />
</form>
4

1 回答 1

2

$(document).ready()如果没有,您的点击事件应该被注册。这将获得您想要的效果,但这里还有更多内容。

您只需.validate()在文档加载时调用一次。这将注册该表单的验证规则,然后您可以使用提交处理程序来确定单击了哪个按钮。有关示例,请参见此 jsfiddle。请注意,我id在全局范围内声明。可能有很多更好的方法可以解决这个问题,但它应该为您指明正确的方向。

希望有帮助。

于 2013-08-23T02:16:02.413 回答