我在表单中有多个文本输入,并希望像这样验证每个输入:
$(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”的正确方法吗?
答案 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,请相应地替换选择器。