javascript命令并非全部触发

时间:2009-06-01 08:15:36

标签: javascript

我有一个非常简单的JavaScript函数:

function insertPost()
{
    document.postsong.submit()

    parent.document.getElementById('postSongButton').disabled = true;

}

它中的两个命令都可以工作,但只有第一个命令会激活。当他们也切换位置时也是如此。只有第一个会开火...

5 个答案:

答案 0 :(得分:2)

document.postsong.submit()

提交表单,将焦点从功能上移开,功能结束

parent.document.getElementById('postSongButton').disabled = true;

禁用按钮,因此可能没有提交表单的内容。

不太确定是否禁用表单按钮会阻止事件冒泡,但我怀疑这两行的性质会导致您将它们分开,并将第二行放在另一个事件处理程序中。

希望这能指出你正确的方向。

答案 1 :(得分:2)

编辑:在进一步检查时,我发现问题的真正根源在于:

document.postsong.submit()

以下是我在不同浏览器中进行测试的结果。如果submit()之前的行是“button.disable = true”,而按钮类型=“提交”:

  • Firefox禁用该按钮并提交表单。
  • Chrome会停用该按钮,但不会提交。
  • IE不会禁用该按钮,但会提交表单。

这解释了您遇到的行为。在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错误?