形式,formmethod,formenctype通过jQuery提交

时间:2012-12-11 20:02:41

标签: javascript jquery forms html5 events

我想知道如何在表单内的formmethod中设置formactionformenctypeformtarget<input type="submit"> submit事件。

<form action="/url" method="POST">
  ...
  <input type="submit" value="Action 1" formaction="/another-url">
  <input type="submit" value="Action 2" formmethod="PUT">
</form>
 $(function(){
   $('form').bind('submit', function(){
     // how to get it here?
     // need to know if action1 or action2 was clicked, and if any of them have "form*" attributes
     return false;
   });
 });

这里解释了http://www.adobe.com/devnet/dreamweaver/articles/html5-forms-pt2.html#articlecontentAdobe_text_31

由于我正在创建一个jQuery插件,我不知道它将在何处使用,因此它必须是一个通用的解决方案。似乎jQuery无法处理它以提供安全的跨浏览器解决方案。

由于

2 个答案:

答案 0 :(得分:2)

我正在解决这个问题:

$('form > button[type="submit"]').bind('click', function() {
    this.parentNode.action = this.getAttribute('formaction');
});

此代码段假定buttonform的直接后代,但可以轻松扩展为更通用的内容。

我认为这是标准中的一个缺陷,并且真正的表单操作应该可以通过JavaScript以某种方式访问​​,而无需触及按钮或其值。据我所知,没有解决方法是不可能的。

答案 1 :(得分:1)

找到答案,但我不知道它是否是crossbrowser:

$('form').on('submit', function(event){
   var submit_button = event.originalEvent.explicitOriginalTarget;
   if (submit_button.attr('formaction')){
      // form action, enctype, etc
   }
   return false;
});
编辑:这只适用于Gecko,我正在寻找其他选择。似乎IE有event.srcElement,但它不一样。 event.originalEvent.explicitOriginalTarget是可行的方法,但只适用于Firefox,Chrome或IE也无论如何都可以使用。

除非绑定到submit按钮(<input type="submit"><button type="submit">),否则没有跨浏览器方式执行此操作,但这不适用于手动设置按钮将通过Javascript提交,而绑定“提交”它将按预期工作