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中不起作用。有人对此有解决方案吗?