2012-01-09 4 views
1

У меня возникли проблемы с функцией javascipt, над которой я работаю.Не работает функция javascript onblur

Вот что я пытаюсь сделать с помощью функции:

У меня есть таблица элемент с заданным значением, и когда есть щелчок на ней, она называет свою функцию Javasript, которая supose к AppendChild INPUT со значением элемента, поэтому пользователь может изменить это значение. Я хочу, чтобы элемент INPUT вызывал функцию с событием onblur(), поэтому измененное значение может отображаться снова в элементе таблицы.

Моя проблема в том, что элемент не учитывает событие onblur(). Функция выполняется сразу после создания элемента ввода и не ждет события 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

проверить http://jsfiddle.net – KooiInc

ответ

4

Ваша проблема: child.onblur = blurPrueba(), где вы выполняете blurPrueba немедленно. Должна быть ссылка: child.onblur = blurPrueba

Изменение строки, вы указываете браузеру: «при размытии для дочернего элемента активируйте функцию blurPrueba».

Если вы используете blurPrueba(), вы активируете функцию и назначаете ее результат событию размытия, blurPrueba() ничего не возвращает. Так что ваша линия на самом деле говорит: «onblur = undefined»

В общем, если вы хотите, чтобы браузер для обработки событий (здесь blur), необходимо предоставить ссылку к функции обработчика (здесь blurPrueba).

+0

Я отредактировал свой ответ. Означает ли это это? – KooiInc

+0

Привет @kooiInc, я не уверен, понял ли я вас. Я снова надел ребенка child.onblur = blurPrueba() снова на функцию blurPrueba()? – mauguerra

+0

Спасибо за решение, это сработало очень хорошо! – mauguerra

1

Изменить

child.onblur = blurPrueba();

к

child.onblur = функция() {blurPrueba()};

Смежные вопросы