0

これは、3 つのブラウザすべてで問題なくフォームを送信できる唯一の方法です。これがそうである明確な理由はありますか?これに対するよりエレガントなソリューションは?jQuery 1.9 を使用しています。else のコードは IE と Firefox を介して送信するのに十分であるため、Chrome はここでは変わり者です。

function submitFormByPost(actionName){ 
     $("#eventAction").val(actionName);

     var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
     if(is_chrome){
          document.getElementById('myForm').method='POST';
          document.getElementById('myForm').submit();
     }
     else{
          document.forms[0].method='POST';
          document.forms[0].submit(); 
     } 
}
4

3 に答える 3

3

jQuery は、フォームを送信するためのクロスブラウザーの方法を既に提供しているはずです。試す:

var $form = $("#myForm");
$form.attr('method', 'post');
$form.submit();
于 2013-08-07T15:39:08.560 に答える
0

これは、一部の古い Chrome バージョンの互換性のためです。通常document.forms[0]、Chrome でも他のブラウザと同様に機能します。チェックし、Chrome コンソールを開いて書き込む最も簡単な方法 - 正常にconsole.log(document.forms[0]);動作します。

于 2013-08-07T15:38:56.640 に答える
0

Chrome で機能する方法は他のものでも機能するので、それを使用してください。

function submitFormByPost(actionName){ 
  $("#eventAction").val(actionName);
  var frm = document.getElementById('myForm');
  frm.method = 'POST';
  frm.submit();
}

または、jQuery をずっと使用します。

function submitFormByPost(actionName){ 
  $("#eventAction").val(actionName);
  $('#myForm').attr('method', 'POST').submit();
}
于 2013-08-07T15:46:32.027 に答える