«this» в jquery для каждого ввода [text] validate - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть несколько входов текста в форме и хочу проверить каждый ввод, как это:

  $(document).on('keyup', 'input [type="text"]', function (){
    var html = '<span class="error">Se necesita una <b>descripcion mayor a 3 letras!</b>!</span>';
    var val = $(this);
    alert(val.val());   
    //if it's NOT valid  
    if(t.val().length < 4){  
        $(html).insertAfter(val);

    }  
    //if it's valid  
    else{  
        val.find('.error').remove();

    }
});

Я делаю событие keyup для каждого из входов и использую его для ссылки на вход, на котором пользователь вводит данные, но проверка не происходит, и не сообщается о значении, поэтому я предполагаю, что функция не запускается. входной селектор правильно? Это правильный способ использовать «это»?

Ответы [ 2 ]

5 голосов
/ 02 февраля 2012

input [type="text"] не правильный выбор, он должен быть input[type="text"] или input:text

Пространство важно. Он ищет дочерние элементы input элементов, которые имеют [type=text] атрибуты.


Возможно, вам лучше переписать ваше мероприятие так:

$("input:text").on("keyup", function(e) {
    var $input = $(this);

    if($input.val().length < 4) {  
        var $error = $("<span>", {
            html = "Se necesita una <b>descripcion mayor a 3 letras!",
            "class" = "error"
        });
        $error.insertAfter($input);
    }
    else {  
        $input.siblings(".error").remove();
    }
});
2 голосов
/ 02 февраля 2012

У вас есть пробел в селекторе, который не так. Вы можете попробовать это, что еще лучше.

$(document).on('keyup', 'input:text', function (){
   ....
});

Вместо document мы можем использовать форму в качестве корневого селектора для уменьшения области действия.

$('form').on('keyup', 'input:text', function (){
   ....
});

Если у вас есть имя или идентификатор в форме, замените селектор соответственно.

...