2012-01-09 40 views
1

我遇到了一些javascipt函數,我正在處理一些問題。無法使用我的JavaScript onblur函數

這裏是我想用函數來完成:

我有一個給定的值表元素,當有上有一個點擊,它會調用我的javasript功能是supose到的appendChild的INPUT元素與元素的值,因此用戶可以更改該值。我想讓INPUT元素調用一個函數來處理onblur()事件,所以修改後的值可以再次顯示在表格元素上。

我的問題是,該元素不尊重onblur()事件。該功能在Input元素創建後立即執行,並且不會等待成爲onblur()事件。

下面是兩個函數的代碼:

var elemento = true; 

function prueba(clave,cantidad) { 
    if(elemento){ 
     var percent = document.getElementById('porciento' + clave); 
     percent.innerHTML = ""; 
     var input = document.createElement("input"); 
     input.setAttribute('type','text'); 
     input.setAttribute('size','5'); 
     input.setAttribute('value',cantidad); 
     input.setAttribute('id','child'+clave); 
     percent.appendChild(input); 
     input.focus(); 
     child = document.getElementById("child" + clave); 
     child.onblur = blurPrueba(); 
    } 
} 
function blurPrueba() { 
    if(elemento) 
     alert("Hello"); 
} 

顯示警告如果不充當的onblur()

有誰知道爲什麼發生這種情況???

+2

創建一個小提琴,所以我們可以看到它在行動 – webdad3 2012-01-09 19:21:20

+0

嗨,我是這樣一個新的。我如何創建一個小提琴? – mauguerra 2012-01-09 19:23:24

+1

查看http://jsfiddle.net – KooiInc 2012-01-09 19:25:04

回答

4

您的問題是:child.onblur = blurPrueba(),您立即執行blurPrueba。應該參考:child.onblur = blurPrueba

改變行,你告訴瀏覽器:「關於模糊的子元素,激活blurPrueba函數」。

如果您使用blurPrueba()您激活該功能並將其結果分配給模糊事件,則blurPrueba()不會返回任何內容。所以,你的行實際上說:「onblur = undefined

綜上所述,如果您希望瀏覽器(這裏blur)處理一個事件,你需要提供一個參考處理函數(這裏blurPrueba)。

+0

我編輯了我的答案。這說明了嗎? – KooiInc 2012-01-09 19:51:45

+0

Hi @ kooiInc,我不確定我是否理解你。我再次在blurPrueba()函數中再次放置child.onblur = blurPrueba()? – mauguerra 2012-01-09 19:53:19

+0

感謝您的解決方案,它工作得非常好! – mauguerra 2012-01-09 19:56:32

1

變化

child.onblur = blurPrueba();

child.onblur =函數(){blurPrueba()};