Javascript 在firefox中提交jQuery表单

Javascript 在firefox中提交jQuery表单,javascript,jquery,submit,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>

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

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

$(文档).ready(函数(){
$(“#btnLogout”)。单击(函数(){
$('#frm')。提交();
返回false;
});
});

登录:

它在IE7、8、Opera和Google Chrome上运行良好,但在FireFox 3.5上不起作用。
我不明白为什么它不工作?

这可能是一个与jQuery没有直接关系的FF问题。尝试在“操作”属性中放置文件名,如下所示:

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


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

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

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

这对我很有用:

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

$(文档).ready(函数(){
$(“#btnLogout”)。单击(函数(){
$(“#actionform”).submit();
返回false;
});
});
登录:

基于对同一问题的回答:

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

$("#actionform").appendTo("body").submit();
,当通过Javascript添加表单时,使用jQuery手动提交在Firefox下不起作用

解决方案包括克隆表单并提交:

$('#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  
   }

});


@msi
到底什么不起作用?您的表单没有操作,提交功能中没有任何操作,因此它不应该执行任何操作。我想使用@msi我想知道表单如何在不向服务器发送任何数据的情况下工作。@c0mrade如果您的表单上没有任何输入,它将不会向服务器发送任何数据。奇怪的是,它对我有效。您试图发布到的实际文件名是什么?@palehorse我使用的是ASP.NET MVC,因此实际文件名是某个控制器的操作方法(操作表单方法的URL是“/Security/Logout”)。但actin方法不执行此操作,我已通过调试器尝试过。您的路由表是否包含/default.aspx或类似的内容?如果是这样的话,也许您可以编写表单代码,而不是使用表单助手来执行操作。你也可以在路由表中添加一些可以接受a/index.htm或其他默认文档名的内容来实现这一点。这不是ASP.NET MVC的问题,这是FireFox的问题,因为IE、Opera和Google ChromeI都可以正常工作。我知道这是FireFox的问题;然而,有时为了解决一种技术的问题,我们需要以稍微不同的方式使用另一种技术。我已经在MVC中多次使用了jQuery的submit()方法,但在操作中总是有一个/以上的名称,这就是为什么我建议将其设置为使用“文件”名称/路由或类似的名称,以避免操作中的单个“/”。这对我也适用。但是,当您尝试在something.html之前使用“/”时,就像这样,它不仅适用于FireFox:(@msi为什么要使用/something.html而不是something?因为我需要从站点根目录访问此文件。当我有这样的站点结构:/test/foo.html index.html somthing.html时,我将无法访问IE和Chrome上的somthing.html表单/test/foo.htmlBut,但一切正常。这是真正的bug(或某些安全功能)在Firefox中,如果你通过javascript修改表单(不是通过javascript生成的),你也不能通过javascript提交表单……Firefox成为了新的IE,它简直糟透了。这个解决方案的问题是
clone()
不克隆
textarea
select
项的值。尽管在1.4.x中对此进行了错误修复,
clone()
在Firefox中仍然不起作用!有任何解决方案吗???您可以尝试:我应该尝试什么?@Younes0当表单在
submit()
之前通过javascript修改时,在Firefox 46.0.1中不起作用。有人对此有解决方案吗?