2012-01-09 2 views
1

저는 작업중인 javascipt 함수에 몇 가지 문제가 있습니다.javascript onblur 함수가 작동하지 않습니다.

내가 주어진 값을 가진 테이블 요소를 가지고 있고, 그 위에 클릭이있을 때, 그것이을에 appendChild 할 supose 내 기능인 자바 스크립트 함수를 호출 : 여기

내가 기능을 수행하는 것을 시도하고있는 무슨이다 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

+0

안녕하세요, 저는 이것에 대해 새롭습니다. 나는 어떻게 바이올린을 만듭니 까 ?? – mauguerra

+1

check http://jsfiddle.net – KooiInc

답변

4

문제 : child.onblur = blurPrueba(), 여기서 blurPrueba을 즉시 실행합니다. 참조가되어야합니다 : child.onblur = blurPrueba

줄을 변경하면 브라우저에 "하위 요소의 흐림 효과가 있음, blurPrueba 기능을 활성화하십시오"라고 말합니다.

blurPrueba()을 사용하는 경우 함수를 활성화하고 그 결과를 blur 이벤트에 할당하면 blurPrueba()은 아무 것도 반환하지 않습니다. 그래서 선은 실제로 말한다 : 요약 "onblur = undefined"

, 브라우저가 (여기 blur) 이벤트를 처리하는 경우 (여기 blurPrueba) 핸들러 함수에 참조를 제공해야합니다.

+0

내 대답을 편집했습니다. 그게 분명해? – KooiInc

+0

안녕하세요 @ kooiInc, 나는 당신을 이해하는지 잘 모르겠습니다. 나는 blurPrueba() 함수에서 다시 child.onblur = blurPrueba()를 다시 넣을 까? – mauguerra

+0

솔루션을 제공해 주셔서 감사합니다. – mauguerra

1

변경

child.onblur = blurPrueba();

에 child.onblur = 함수() {blurPrueba()};

관련 문제