我有一个非常简单的JavaScript函数:
function insertPost()
{
document.postsong.submit()
parent.document.getElementById('postSongButton').disabled = true;
}
它中的两个命令都可以工作,但只有第一个命令会激活。当他们也切换位置时也是如此。只有第一个会开火...
答案 0 :(得分:2)
document.postsong.submit()
提交表单,将焦点从功能上移开,功能结束
parent.document.getElementById('postSongButton').disabled = true;
禁用按钮,因此可能没有提交表单的内容。
不太确定是否禁用表单按钮会阻止事件冒泡,但我怀疑这两行的性质会导致您将它们分开,并将第二行放在另一个事件处理程序中。
希望这能指出你正确的方向。
答案 1 :(得分:2)
编辑:在进一步检查时,我发现问题的真正根源在于:
document.postsong.submit()
以下是我在不同浏览器中进行测试的结果。如果submit()之前的行是“button.disable = true”,而按钮类型=“提交”:
这解释了您遇到的行为。在getElementById之前拥有父母不会伤害任何东西,但这不是必要的。将insertPost()函数中的代码更改为:
function insertPost(){
document.getElementById("postSongButton").disabled = true;
document.forms["postSong"].submit();
}
答案 2 :(得分:1)
您是否检查了html元素的大小写?
答案 3 :(得分:1)
单击你正在调用函数insertPost()的按钮。所以你要做的就是先禁用按钮然后提交表单。我想我不明白为什么使用对象的父对象。
function insertPost() {
parent.document.getElementById('postSongButton').disabled = true;
document.postsong.submit();
}
答案 4 :(得分:0)
您正在使用parent.document.getElementById(...
只需检查您是否正确引用该按钮。即如果您使用的父参考是正确的。即如果按钮与表格或父母在同一页面。
是的,首先您必须禁用该按钮,然后触发表单的提交操作。当您以其他方式执行此操作时,最终可能会导航到另一个页面,并且禁用行可能永远不会执行。
但是,既然你说,禁用根本不适合你,我想如果你使用了错误的引用。当您尝试禁用它时,它是否为您提供了任何javascript错误?