Простая динамическая форма

Мне нужно проверить ввод с помощью .onblur, чтобы всякий раз, когда текстовый ввод теряет фокус, он проверялся той же функцией JS.

Моя проблема связана с функцией JS. Я хочу получить значение элемента, который теряет фокус.

function valid(){
if (isNaN("this should be the value of the text item??")){

}

Спасибо..


person Khaled Mahmoud    schedule 19.02.2013    source источник
comment
Пожалуйста, опубликуйте код.   -  person j08691    schedule 19.02.2013


Ответы (2)


Чтобы получить значение элемента при размытии, вы должны добавить триггер onBlur к элементу DOM следующим образом:

<input type="text" name="validate_me" onBlur="valid(this);" />

Таким образом, у вас есть доступ к элементу DOM, вызвавшему событие onBlur, и вы можете получить доступ к его свойствам (таким как value или innerHTML в случае элементов textarea).

Тогда ваша функция valid может выглядеть примерно так:

function valid(element) {
  if (element.value != '' && isNaN(element.value))
    alert('This field is not valid!');
};
person toomanyredirects    schedule 19.02.2013
comment
вы можете использовать document.onLoad для регистрации метода, который будет использовать document.getElementByTagName('input') для поиска всех входных данных, а затем зарегистрировать onBlur слушателей для каждого - person Lucas; 19.02.2013

Этот javascript должен делать то, что вы просите:

(function(){
    var after = function(existing,after) {
        if ( existing == null || typeof existing !== 'function' ) {
            return after;
        }
        else {
            return function() { existing(arguments); after(arguments); }
        }
    }

    var validate = function(input) {
        alert('validating ' + input.name);
    }

    window.onload = after(window.onload, function() {
        var inputs = document.getElementsByTagName('input');
        for (var i = 0; i < inputs.length; i++) {
            if ( inputs[i].type === 'text' ) {
                inputs[i].onblur = after(inputs[i].onblur, function() {
                    validate(this);
                });
            }
        }
    });
}());

Очевидно, вам придется заменить предупреждение в функции проверки вашей логикой проверки, но это должно делать то, что вы просите.

Пара замечаний: немедленно вызываемая функция предназначена для того, чтобы гарантировать, что вы не забиваете какие-либо глобальные переменные, а функция after гарантирует, что если у вас уже есть подключенный прослушиватель, ваш новый прослушиватель проверки будет вызываться после существующего.

person Lucas    schedule 19.02.2013