Не работает моя функция javascript onblur - PullRequest
1 голос
/ 09 января 2012

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

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

У меня есть элемент таблицы с заданным значением, и когда по нему щелкают, он вызывает мою функцию javasript, которая подходит для добавления элемента 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");
}

Предупреждение отображается без включения ()

Кто-нибудь знает, почему это происходит ???

Ответы [ 2 ]

4 голосов
/ 09 января 2012

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

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

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

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

1 голос
/ 10 января 2012

Изменение

child.onblur = blurPrueba ();

до

child.onblur = function () {blurPrueba ()};

...