2012-01-09 45 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()};