3

フォームの内側に設定されている場合、イベントformmethodformaction、、、formenctypeまたはを取得する方法を知りたいです。formtarget<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は、安全なクロスブラウザソリューションを提供するためにまだそれを処理できないようです。

ありがとう

4

2 に答える 2

2

私はこれに落ち着きます:

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

このスニペットはbutton、の直接の子孫であると想定formしていますが、より汎用的に簡単に拡張できます。

これは標準の欠陥だと思います。ボタンやその値に触れることなく、JavaScriptで実際のフォームアクションにアクセスできるようにする必要があります。私の知る限り、回避策なしでは不可能です。

于 2013-04-08T21:26:03.737 に答える
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ボタン(<input type="submit">および)にバインドしない限り、これを行うクロスブラウザの方法はありませ<button type="submit">んが、Javascriptを介して送信するボタンを手動で設定する場合は機能しませんが、「送信」をバインドすると、意図したとおりに機能します

于 2012-12-11T20:35:28.213 に答える