2011-04-21 71 views
6

我有一个简单的表单,可以通过一个小的jQuery脚本在元素外部提交。jQuery提交不在Opera中工作

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#mybutton').click(function(){ 
      $('#myform').attr('action', '/url/to/form').submit(); 
     }); 
    }); 
</script> 

按钮仅仅是一个正常的链接

<a href="javascript:void(0);" id="mybutton">Just a normal link</a> 

形式仅仅是一个正常的形式

<form id="myform" action="/url/to/form"> 
    .... 
    <input type="submit" value="Search"> 
</form> 

能正常工作在IE,FF,Chrome和Safari浏览器而不是歌剧。在Opera中,它总是重定向到我的主页,而不是表单动作的URL。我已经尝试在脚本中设置动作(如上所述),通常在表单动作参数内但没有运气。我正在运行最新的jQuery和Opera。

请帮

编辑:我也使用jQuery UI框架来处理一些内容和互动的

+0

你好,显然Opera想知道你想要寻找什么样的目标页面。你是否也尝试以正常的HTML方式提交表单?如果是这样,它的工作? – reporter 2011-04-21 10:48:39

+0

什么是您的#mybutton的html代码? – 2011-04-21 10:49:26

+0

按钮的标记是什么样的?它在表单内吗? – Pointy 2011-04-21 10:50:30

回答

1

我相信这将与某些事情有关,用目前不完整的jquery ui select类。它添加了一个标签与href作为#我相信这可能是你的问题。

+0

我看了一下UI类,是的,它在href中使用#。由于某种原因,这似乎是在提交页面上重定向页面。改变这是jQuery UI脚本停止这个。谢谢 – bpneal 2011-04-21 14:48:48

1

我会做的第一件事就是更改处理程序,以防止该链接的默认操作:

$('#mybutton').click(function(ev){ 
     ev.preventDefault(); 
     $('#myform').attr('action', '/url/to/form').submit(); 
    }); 

使用<a>标签按钮意味着你必须要小心的是,浏览器不会在语义混淆。我没有很多在Opera上调试的经验,但这是我怀疑的第一件事。

如果没有与“按钮”相关的真正“href”,我会质疑为什么它是一个<a>标签;它可能只是一个简单的<span>,它也可以附加一个点击处理程序,但不具有任何潜在问题的本机行为。

0

尝试的只是 $('#myform').submit();代替 $('#myform').attr('action', '/url/to/form').submit();

编辑:对方回答说,你首先必须在click事件做任何事情之前调用event.preventDefault();,作为防止浏览器重定向你。

EDIT2:正确的代码如下:

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#mybutton').click(function(event){ 
     event.preventDefault(); 
     $('#myform').attr('action', '/url/to/form').submit(); 
    }); 
}); 

这应该很好地工作。

+0

表单动作可能会发生变化 – Zebra 2011-04-21 11:15:29

+0

@dany:明白了,改变了答案,这是不正确的。 – 2011-04-21 11:20:11

+0

a标签更多的是一个例子,而不是一个设计选择。我已将其更改为跨度并包含preventDefault命令,但仍遇到同样的问题。 – bpneal 2011-04-21 11:51:28