【问题标题】:Formaction, formmethod, formenctype through jQuery submitFormaction,formmethod,formenctype通过jQuery提交
【发布时间】:2012-11-29 10:33:03
【问题描述】:

我想知道如何获取formmethodformactionformenctypeformtarget,当在<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还不能处理它来提供一个安全的跨浏览器解决方案。

谢谢

【问题讨论】:

标签: javascript jquery forms html events


【解决方案1】:

找到了答案,但不知道是不是跨浏览器:

$('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 按钮(&lt;input type="submit"&gt;&lt;button type="submit"&gt;),否则没有跨浏览器的方式来执行此操作,但这不适用于手动设置将通过 Javascript 提交的按钮,在绑定“提交”时,它将按预期工作

【讨论】:

    【解决方案2】:

    我正在解决这个问题:

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

    此 sn-p 假定 buttonform 的直接后代,但可以轻松扩展为更通用。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-09
      • 2011-04-21
      • 1970-01-01
      相关资源
      最近更新 更多