我已经阅读了很多关于javascript中事件的时间和处理的线程,但是我还没有找到解决我的问题的方法,或者至少我是个白痴:(。
以下是参考文献列表:
- 如果提交处理程序返回 true,则不会在 Safari 中执行 jQuery show() 函数
- JavaScript 命令未在 Safari 中按顺序执行
- 为什么 setTimeout(fn, 0) 有时有用?
- 网页中经常使用的零延迟setTimeout,为什么?
我有最新版本的 OsX (Mountain Lion) 和最新版本的 safari 以及以下代码:
function handler(btn, form,content){
var submitHandler = function(){
form.submit(function(e){
return true;
});
};
btn.click(function(e){
form.children().hide(); //command1
content.show(); //command2
setTimeout(submitHandler,0); //command3
});
}
我还创建了一个 JsFiddle 示例来表示我的问题:http: //jsfiddle.net/nxjohny/t4s5W/1/ 不幸的是,我必须使用带有 name="submit" 属性的提交按钮。因此,没有选项可以防止默认单击事件并在以编程方式提交表单后。:(
代码将在用户单击按钮时执行,命令执行它们必须执行的操作:command1 隐藏表单的子元素。(添加 style="display: hidden;" 到子元素。command2 将显示表单的隐藏部分。(添加 style="display:block" 到相应元素)。在事件处理程序接受 form.submit 和返回真。
我实际上想要用这段代码隐藏和显示 html 页面的正确元素。该代码将在页面上应用与样式相关的部分,并在提交返回后不隐藏/绘制正确的元素。
此代码适用于 Chrome、Linux/Windows/OsX 中的 Firefox 和 Windows 中的 Safari,但 Osx-Safari 6.XX 除外
此代码适用于 Safari 5.XX 和 OsX。
在提交之前,我应该在代码中添加什么来真正隐藏和显示元素?
每一条评论都将受到欢迎和感激!
此致!