![](/img/trans.png)
[英]Check 2 input fields and a select field for changing after they all have been filled
[英]Check all input fields have been filled out with jQuery
我有3个div,每个div都有一个dfew输入字段和下一个按钮。 我想编写一个jQuery片段,当单击下一个按钮时,它会检查以确保与按钮位于同一div的所有输入字段不为空。
我试过以下没有运气,但我100%肯定是错的,只是我无法在网上找到相关信息......
您可以使用filter
将所有input
元素的集合减少为仅为空的那些,并检查剩余的length
属性:
$(".next").click(function() {
var empty = $(this).parent().find("input").filter(function() {
return this.value === "";
});
if(empty.length) {
//At least one input is empty
}
});
请注意,上面代码中的empty定义是一个空字符串。 如果要将空格也视为空,则可能需要在比较之前修剪该值。
另请注意,无需this
函数传递给filter
函数中的jQuery。 DOM元素本身将具有value
属性,访问它而不是使用val
要快得多。
这是一个更新的小提琴 。
$('.next').click(function() {
var emptyInputs = $(this).parent().find('input[type="text"]').filter(function() { return $(this).val() == ""; });
if (emptyInputs.length) {
alert('Fail!');
}
});
因为在这种情况下没有jQuery选择器,所以可以扩展jQuery的选择器功能。
假设您选择all :text元素,扩展名为:
$.extend($.expr[':'],{
isEmpty: function(e) {
return e.value === '';
}
});
因此,您可以选择所有空文本字段:
$(this).closest('div').find(':text:isEmpty');
$.extend($.expr[':'], { isEmpty: function (e) { return e.value === ''; } }); $('.next').click(function () { var missingRequired = $(this).closest('div').find(':text:isEmpty'); console.log('Empty text fields: ' + missingRequired.length); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div> <input type="text" /><br /> <input type="text" /><br /> <input type="text" /><br /> <input type="submit" value="next" class="next" /> </div> <div> <input type="text" /><br /> <input type="text" /><br /> <input type="text" /><br /> <input type="submit" value="next" class="next" /> </div> <div> <input type="text" /><br /> <input type="text" /><br /> <input type="submit" value="next" class="next" /> </div>
$('.next').click(function() {
var inputs = $(this).parent().find('input[value=""]');
if (!inputs.length) {
// you have empty fields if this section is reached
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.