每个输入[text]的jquery上的“this”验证

时间:2012-02-01 21:09:01

标签: jquery this

我在表单中有多个文本输入,并希望像这样验证每个输入:

  $(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事件,并使用它来引用用户输入的输入,但没有验证发生且没有提醒值,所以我猜这个函数没有触发是输入选择对吗?这是使用“this”的正确方法吗?

2 个答案:

答案 0 :(得分:5)

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();
    }
});

答案 1 :(得分:2)

选择器中有一个空格是错误的。你可以试试这个更好的。

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

我们可以使用form作为根选择器来缩小范围,而不是document

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

如果表单中有名称或ID,请相应地替换选择器。