jQuery提交不在Opera中工作

时间:2011-04-21 10:40:27

标签: javascript jquery html forms opera

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

<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。在Opera中,它总是重定向到我的主页,而不是重定向到表单操作的URL。我已经尝试在脚本中设置动作(如上所述),通常在表单动作参数中但没有运气。我正在运行最新的jQuery和Opera。

请帮忙

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

3 个答案:

答案 0 :(得分:1)

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

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

对按钮使用<a>标记意味着您必须小心浏览器不要对语义感到困惑。我没有很多在Opera上调试的经验,但这是我怀疑的第一件事。

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

答案 1 :(得分:0)

只需$('#myform').submit();代替$('#myform').attr('action', '/url/to/form').submit();

编辑:正如另一个答案所说,在点击事件之前,您首先必须致电event.preventDefault();,因为这会阻止浏览器重定向您。

Edit2:正确的代码是:

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

这应该可以正常工作。

答案 2 :(得分:0)

我相信它会与当前不完整的jquery ui select class有关。它添加了一个带有href的标签,因为#i相信这可能是你的问题。