验证多个输入

时间:2012-07-03 21:37:03

标签: jquery html

我有许多输入通过加号和减号动态添加。 所有这些输入都将添加到div encdomlocal中。我使用以下代码验证输入,然后添加CSS,但它没有按预期工作。即它只验证div中的第一个输入框。

$('#encdomlocal input:nth-child(2)').blur(function() {
    var REGEX = /^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/;
if (REGEX.test($("#encdomlocal input:nth-child(2)").val())) {
  $(this).removeClass();
  $(this).addClass("good");
} 
    else {
      $(this).removeClass();
      $(this).addClass("bad");
   }
});

任何帮助都会很棒,谢谢......

1 个答案:

答案 0 :(得分:1)

您需要委托动态创建的输入 如果使用jQuery 1.7+,则使用on

$(document).on('blur','#encdomlocal input:nth-child(2)',function() {

否则,您可以使用delegate jquery 1.6及更低版本

$(document).delegate('#encdomlocal input:nth-child(2)','blur',function() {

document可以替换为任何父元素

更新:

if (REGEX.test($(this).val())) { //<-- I don't know what you were testing but using $(this) works here
    $(this).removeClass();
    $(this).addClass("good");
}
else {
    $(this).removeClass();
    $(this).addClass("bad");
}

这是更新的小提琴http://jsfiddle.net/9DW8f/9/

您正在使用

if (REGEX.test($("#encdomlocal input:nth-child(2)").val()))

它返回了一组元素,因此您没有测试触发blur事件的当前文本框

  

jQuery Object:The Wrapped Set:Selectors返回一个名为“wrapped set”的jQuery对象,它是一个类似于数组的结构,包含所有选定的DOM元素。您可以像数组一样迭代包装的集合,也可以通过索引器访问单个元素(例如$(sel)[0])。更重要的是,您还可以对所有选定的元素应用jQuery函数。&lt;

如果您打算使用相同的REGEX,可以通过用逗号分隔来添加其他选择器

$("#encdomlocal").on("blur", "input:nth-child(2),otherSelector",//<--- use this if regex for validation is the same

如果您使用新的正则表达式,则可以使用

$(document).on('blur','otherSelector',function() {
    // validation code goes here.  You can pretty much copy the other one and change the regex to what you need
});