在Safari中提交表单后,对DOM进行样式更改时遇到问题。有人知道它是否可能吗?这是Safari的预期浏览器行为吗?
我已经建立了一个非常简单的示例,这样您就可以看到实际问题:
http://jamesmichaelking.com/stackoverflow/safari/index.html
该示例包括一个发布到自身的HTML表单,以及一个jquery表单提交事件,该事件查找输入按钮并将背景更改为红色。
这个例子在firefox和chrome中运行良好
我在示例中包括了HTML、JS和CSS:
HTML

<form action="index.html" method="post">
    <input type="submit" value="Submit me!">
</form>

CSS
body {
    font-family: sans-serif;
    color: #fff;
    text-align: center;
}

input {
    border: none;
    padding: 20px;
    font-size: 20px;
    background: #036;
    color: #fff;
}

JQuery
$(function() {

            $('form').on('submit', function() {
                $(this).find('input').css('background', '#c00');
            });

        });

奇怪的是,我用相同的代码创建了一个JSfiddle,它工作得很好:
http://jsfiddle.net/jamesking/q8WcV/
我在Mac上测试Safari 7
有什么帮助吗?非常感谢

最佳答案

看来A.Wolff的解决方案在Safari 8.0.6上对我不起作用
我还尝试了其他方法,比如恢复默认的提交事件处理程序(How to unbind a listener that is calling event.preventDefault() (using jQuery)?),但它不起作用。
经过大量的测试,我想出了一个解决方案。它可能不是最干净的,但它起作用了。

var form = $("form");
form.on("submit", function (e) {

    // Do your thing

    e.preventDefault();

    setTimeout(function(){
        form.off("submit");
        form.find("input[type=submit], button[type=submit]").eq(0).click();
    }, 500);
});

07-28 02:26
查看更多