js函数的行为有所不同,具体取决于它的调用方式

时间:2013-11-05 17:15:19

标签: javascript html select onclick onchange

我正在尝试这样做,以便更改select标签的选定选项将提交与按钮相同的表单,我有:

function form_search()
{
    document.forms['myform'].process.value = 'search';
    document.forms['myform'].submit();
}

包含在html文件中的/body标记之前,包括:

<select name="attribute" form="myform" onchange="form_search();">
    <option value="op1">op1</option>
    <option value="op2">op2</option>
</select>

<input type="hidden" name="process">

<button onclick="form_search();">button</button>

当我按下按钮时,一切都按照我的预期运行。但是,当我更改与select标签关联的选项时,根据firebug,它似乎在js函数中同时触及两行,但表单似乎没有提交。我认为在这种情况下,js函数的document.forms['myform'].submit();行会触发错误。

任何想法是怎么回事?当然,对没有args的函数的两次调用应该表现相同吗?

1 个答案:

答案 0 :(得分:2)

如果document.forms['myform'].submit();发生错误,那么最可能的原因是名为submit的表单中有一些内容正在覆盖DOM中表单的submit方法。在您与我们分享的代码中没有任何迹象。

鉴于:

更改选择将运行JS。第一行将运行。第二行会出错,那就是它的结束。

单击该按钮将运行JS。第一行将运行。第二行会出错。按钮的正常行为将继续,它将提交表单(使用标准HTML表单提交而不是JS)。