【问题标题】:js function behaves differently depending on how it is calledjs 函数的行为取决于它的调用方式
【发布时间】:2013-11-05 17:15:19
【问题描述】:

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

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>

当我按下按钮时,一切都如我所料。但是,当我更改与选择标记关联的选项时,根据萤火虫它似乎击中了 js 函数中的两行,但表单似乎没有提交。我认为在这种情况下,js函数的document.forms['myform'].submit();行会触发错误。

有什么想法吗?对没有参数的函数的两次调用肯定应该表现相同吗?

【问题讨论】:

  • “我认为有错误” — JavaScript 错误控制台说什么?
  • 你能不能也包括我们在这里讨论的form
  • 甚至不知道有错误控制台,谢谢!只是为了记录,它说“TypeError:document.forms.myform.submit 不是函数”所以接受的答案提供了表单提交的原因,谢谢大家。

标签: javascript html select onclick onchange


【解决方案1】:

如果document.forms['myform'].submit(); 出错,那么最可能的原因是表单内部有一个名为submit 的东西覆盖了DOM 中表单的submit 方法。不过,您与我们共享的代码中没有任何迹象。

鉴于:

更改选择将运行 JS。第一行将运行。第二行会出错,到此结束。

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

【讨论】:

    猜你喜欢
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 2016-12-07
    • 2010-12-07
    • 2015-12-07
    • 2021-11-19
    • 1970-01-01
    相关资源
    最近更新 更多