2013-07-25 95 views
1

我可以在同一個html輸入標籤上調用多個onkeyup事件嗎?如何在一個html標籤上調用多個onkeyup事件

<input style="float: left; width: 50px;" id="PersonLength" name="PersonLength" onkeyup="checkNr(this.id)" onkeyup="fill()" type="text"> 

這樣的事情?

<input style="float: left; width: 50px;" id="PersonLength" name="PersonLength" 
onkeyup="checkNr(this.id), fill()" type="text"> 

還是這樣? ive treid them both但我可能有錯誤的語法?還是有更好的方法來做到這一點?

回答

10

你不呼叫onkeyup事件,他們的活動,他們發生

您可以使用EventListener API添加多個事件偵聽器。

var input = document.getElementById("my_input"); 
input.addEventListener("keyup", function() { 
    doSomething(); 
}); 
input.addEventListener("keyup", function() { 
    doSomethingElse(); 
}); 
// .. etc 

的替代符號是:

<input .. onkeyup="checkNr(this.id); fill()" type="text"> 
            ^- semicolon 

這是類似的:

var input = document.getElementById("my_input"); 
input.addEventListener("keyup", function() { 
    checkNr(input.id); 
    fill(); 
}); 
+0

我必須HTML標籤上的事件監聽就像在我的代碼 –

+0

@DanielGustafsson見他的第二個「另類符號」 - 使用功能之間的分號調用是關鍵。您也可以在一個通用函數中同時使用這兩個函數並調用該函數。 – phatskat

+0

如果向前兩個綁定函數添加e參數,則可以通過事件對象e訪問源元素。這允許訪問目標對象的id,類似於第二種方法,但不需要在函數之外聲明的變量。 – ManoDestra

2

另一種方式來羅馬:

如果要調用多個功能和設置事件內聯,你可以編寫一個額外的方法來調用所有的方法。

for ex。

<input style="float: left; width: 50px;" id="PersonLength" name="PersonLength" onkeyup="yourElemOnKeyup(this.id)" type="text"> 

腳本

function yourElemOnKeyup(id){ 
     checkNr(id); 
     fill(); 
}