JQuery отправка формы в Firefox - PullRequest
       37

JQuery отправка формы в Firefox

4 голосов
/ 23 февраля 2010

Пожалуйста, помогите мне с одной проблемой. У меня есть этот код для отправки формы через якорь.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $("#btnLogout").click(function() {
                $('#frm').submit();
                return false;
            });
        });
    </script>
</head>
<body>
    <form id="frm" action="/" method="post">
        <div>
            <p>
                <label for="txtLogin">Login:</label>
                <input name="txtLogin" />
            </p>
        <div>
           <a id="btnLogout" href="javascript:void(0)">выход</a>  
        </div>
        </div>
    </form>
</body>
</html>

Отлично работает на IE7,8, Opera и Google Chrome, но не работает на FireFox 3.5. Я не могу понять, почему это не работает?

Ответы [ 5 ]

18 голосов
/ 28 октября 2012

На основе ответа на тот же вопрос здесь: Jquery Form.submit () в Chrome работает, но не в Firefox

Добавить объект формы в DOM перед отправкой:

$("#actionform").appendTo("body").submit();
2 голосов
/ 29 апреля 2013

В соответствии с этим , ручная отправка с jQuery не работает в Firefox, когда форма добавлена ​​через Javascript (это также означает, что ajax анализирует материал).

Решение состоит в том, чтобы клонировать форму и отправить ее:

$('#myform').on('submit', function(e) {
   e.preventDefault();
   if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1) {
     $(this).clone().appendTo("body").submit(); // FF only
   } else {
     this.submit(); // works under IE and Chrome, but not FF  
   }

});
0 голосов
/ 23 февраля 2010

Попробуйте включить кнопку отправки в форму. Даже если он скрыт.

<input type="submit" style="display:none;" />
0 голосов
/ 23 февраля 2010

Это работает для меня:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script>

    <script type="text/javascript">
  $(document).ready(function() {
    $("#btnLogout").click(function() {
      $("#actionform").submit();
         return false;
    });
  });
  </script>

</head>

<body>

<form id="actionform" action="something.html" method="post" name="forma">

        <label for="txtLogin">Login:</label>
        <input name="txtLogin" />
     <a href="#" id="btnLogout">Uno mas</a>  

</form>

</body>
</html>
0 голосов
/ 23 февраля 2010

Это может быть проблема FF, не связанная напрямую с jQuery. Попробуйте добавить имя файла в атрибут действия, как это:

<form id="frm" action="/index.html" method="post">

Просто убедитесь, что вы изменили index.html на ваш документ по умолчанию.

...