2014-07-05 48 views
0

我有這個非常基本的代碼,我覺得應該工作,但不是。從onkeyup事件輸入中觸發JS函數

我有這樣的形式:

<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 

我可以得到一些幫助嗎?

+0

你能提供完整的html和js代碼嗎? –

+0

「對象不是函數」消息是一個很好的線索。搜索名稱確實存在於正確的範圍內,但它不是一個函數。您可以嘗試在頁面上打開JS控制檯並註銷'search'的值來查看它的內容。 –

+0

@LibertPiouPiou http://jsfiddle.net/WpvY9/3/ –

回答

2

在您的代碼中,您有一個名爲search的函數和一個idsearch的元素。帶有id的HTML元素將成爲該名稱的全局變量,因此idsearch的元素將覆蓋您的函數的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); 
} 
+0

啊輝煌,我從來不知道。解決了我的問題,一旦定時器啓動就會標記爲正確答案! –

0

在HTML你不能在同一形式的元素ID和函數名。這些會產生衝突。

當您在窗體中添加ID時,它會將該元素添加爲窗體[id]。所以如果你有相同的功能名稱,他們會以相同的形式創建衝突。

Here是一個非常好的問題已被回答大約相同。