【问题标题】:Firing JS function from onkeyup event input从 onkeyup 事件输入触发 JS 函数
【发布时间】:2014-07-05 16:44:02
【问题描述】:

我有这个非常基本的代码,我觉得它应该可以工作,但实际上并没有。

我有这个表格:

<form id="search-box" action="">
     <input id="search" type="text" placeholder="Search here.." onkeyup="search(this.value)"><!--
   --><input id="submit" type="submit" value="Search">
</form>

此表单触发 JS 搜索功能。此搜索功能包含:

function search(input){
    alert(input);
}

我已经在html文档的头部链接了包含函数的JS文件:

<script src="js/ajax.js"></script>

但问题是这不起作用。触发 onkeyup 时出现错误:

Uncaught TypeError: object is not a function    localhost:16:201
onkeyup localhost:16:201

我可以得到一些帮助吗?

【问题讨论】:

  • 能否提供完整的html和js代码?
  • object is not a function 消息是一个很好的线索。 search 这个名字确实存在于正确的范围内,但它不是一个函数。您可以尝试在页面上打开 JS 控制台并注销 search 的值以查看它是什么。
  • @LibertPiouPiou jsfiddle.net/WpvY9/3

标签: javascript onkeyup


【解决方案1】:

在您的代码中,您有一个名为search 的函数和一个具有idsearch 的元素。带有id 的HTML 元素通过该名称成为全局变量,因此带有searchid 的元素将覆盖作为您的函数的search 变量。

试试这样的。

HTML

form id="search-box" action="">
     <input id="search" type="text" placeholder="Search here.." onkeyup="doSearch(this.value)"><!--
   --><input id="submit" type="submit" value="Search">
</form>

JS

function doSearch(input){
    alert(input);
}

【讨论】:

  • 啊,太棒了,我从来不知道。已解决我的问题,一旦计时器到了,将标记为正确答案!
【解决方案2】:

在您的 HTML 中,表单中的元素 ID 和函数名称不能相同。这些会产生冲突。

当您在表单中添加 ID 时,它会将该元素添加为 form[id]。因此,如果您将具有相同的函数名称,它们将以相同的形式产生冲突。

Here 是一个非常好的问题,已经回答了同样的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 2022-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多