我有许多输入通过加号和减号动态添加。 所有这些输入都将添加到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");
}
});
任何帮助都会很棒,谢谢......
答案 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
});