在Firefox中提交jQuery表单

时间:2010-02-23 15:19:34

标签: javascript jquery submit

请帮我解决一个问题。我有这个代码,用于通过锚点提交表单。

<!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 个答案:

答案 0 :(得分:18)

基于此处相同问题的答案:Jquery Form.submit() on Chrome works but not in Firefox

在提交之前将表单对象添加到DOM:

$("#actionform").appendTo("body").submit();

答案 1 :(得分:2)

According to this,当通过Javascript添加表单时,使用jQuery手动提交在Firefox下不起作用(这也意味着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  
   }

});

答案 2 :(得分:0)

这对我有用:

<!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>

答案 3 :(得分:-2)

尝试在表单中包含提交按钮。即使它被隐藏了。

<input type="submit" style="display:none;" />

答案 4 :(得分:-4)

这可能是一个直接与jQuery无关的FF问题。尝试在action属性中放置一个文件名,如下所示:

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

只需确保将index.html更改为您的默认文档。