2012-05-15 50 views
0

我認爲標題不是很適應,但我不知道該怎麼做。如果你想要編輯它。我自己的函數觸發像onclick

我想要的是很奇怪,但請不要downvote。我想創建我自己的功能,將被稱爲像這樣:<input type="text" onMyFunction="alert('hi');" />

如果不可能,只要告訴它,我檢查它是最好的答案。

P.S:如果有效,該函數將被永久調用,並且在該函數內部,我將在開始處放置一個if

+0

你想聽/觸發一個自定義類型的事件? 「永久呼叫」是什麼意思? – Bergi

+2

你會如何解決這個事件? – Joseph

+2

這聽起來像你應該更多地描述你實際想要達到的問題。 – simon

回答

1

的你有問題是瀏覽器沒有意識到它是那裏的一個功能。它是一個字符串,你可以將它作爲一個函數的唯一方法是將它分配爲一個函數。

一種方法是在文檔就緒或onload上,您查詢文檔中具有該屬性的元素並重新分配它。

HTML

<input id="foo1" type="text" onMyFunction="alert(this.value);" value="1"/> 
<input id="foo2" type="text" onMyFunction="alert(this.value);" value="2"/>​ 

的JavaScript

var winLoad = window.onload; 
window.onload = function(){ 
    var i, 
     elem, 
     fncStr,  
     elems = document.querySelectorAll("[onMyFunction]"); 

    if (winLoad) { 
     winLoad(); 
    } 

    for (i=0;i<elems.length;i++) { 
     elem = elems[i]; 
     fncStr = elem.getAttribute("onMyFunction"); 
     elem.onMyFunction = new Function(fncStr);   
    } 

    var tb1 = document.getElementById("foo1"); 
    tb1.onMyFunction();​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 
} 

Example running here

該代碼使用不是在所有的瀏覽器都支持querySelectorAll

+0

正是我想要的!謝謝! – user1365010

1

如果我理解這個權利,當你的javascript函數被調用時,你想要發生什麼事情。爲什麼不把你想要發生在你的實際功能上?

<script type="javascript/text"> 
function MyFunction(){ 
// some code 
alert('hi'); 
</script> 

我不知道你所謂的永久的意思,但在顯示喜會發生,每次警報上面的代碼的函數被調用,類似於你在你的問題說明什麼,但使用不同的實施。我不相信這是可能的,因爲onClick,onload和onmouseover事件是內置的。所以除非你編寫額外的代碼來實現onMyFunction()函數,正確地說,我沒有辦法做到這一點。

2

爲此,您可以使用純JavaScript,但jQuery是簡單的:

<input id="someId" type="text" /> 

$('#someId').bind('myCustomEvent', function(event) { 
    alert('hi'); 
}); 

而且在代碼的其他地方觸發它:

$("#someId").trigger('myCustomEvent'); 

此處瞭解詳情:http://dailyjs.com/2009/11/14/jquery-custom-events/

+0

愛如何不標記的問題jQuery獲得了jQuery接受的答案。大聲笑 – epascarello

+1

http://meta.stackexchange.com/a/19492 – jfrej

+0

... jQuery ** IS ** javasript。 – user1365010