javascript - 搜索元素是否没有类

标签 javascript jquery

我浏览了很多帖子,但没有找到似乎有效的解决方案...此时有点沮丧,所以我想看看是否有其他人有解决方案。

所以,我正在尝试验证我正在创建的小部件上具有属性“required”的字段,问题是当用户单击“创建”按钮时,它会创建一个新的可见部分并重复由于各种原因,它位于类“隐藏”的隐藏部分中。

我的验证码是这样的:

var $required = $("input[required]").css('border', '1px solid #CCC');
    $invalid = $required.filter(function(){
        return !this.value;
    }).css('border', '1px solid red');

if($invalid.length){
    alert('Please fill in all required fields');
} else {
    //ajax call
}

这在我的所有其他小部件上工作得很好,但由于这个新小部件中有一个隐藏的重复项,它传递可见字段但在隐藏字段上失败。

我的解决方案是在“if”语句中添加第二部分来搜索 invalid 是否有长度以及它的父元素是否没有类“隐藏”。但是,将语句更改为以下内容似乎不起作用:

if( $invalid.length && !$("input[required]").closest("li").hasClass("hide") ){
    alert('Please fill in all required fields');
} else {
    //ajax call
}

现在好像每次都过去了...

我要验证的元素的(一般)结构是 - 我删除了大部分代码,只是为了简化它以供查看:

<li>
    <div class="row-fluid>
        <div class="span3">
            <!-- Some content -->
        </div>
        <div class="span9">
            <input type="text" required />
            <input type="text" />
            <input type="text" />
        </div>
    </div>
</li>

隐藏元素遵循相同的结构,只是它有

<li class="hide">

作为父元素。

我假设我的 jQuery 语法有问题,但我已经尝试解决这个问题很长时间了,以至于我可能只是忽略了一些非常简单的事情......

想法? ;)

最佳答案

您的 if 语句正在测试是否 none 所需元素在隐藏的 LI 中,因为 hasClass("hide") 如果任何选定元素具有该类,则为真。

您可以在选择器中使用 :visible 伪类,这样您就可以只测试未隐藏的元素。

var $required = $("input[required]:visible").css('border', '1px solid #CCC');

或者您可以使用未隐藏的父项中的搜索来查找所需的输入。

var $required = $("li:not(.hide) input[required]").css('border', '1px solid #CCC');

或者您可以在过滤器函数中进行检查:

$invalid = $required.filter(function() {
    return !this.value && !$(this).closest("li").hasClass("hide");
});

关于javascript - 搜索元素是否没有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39299230/

相关文章:

javascript - 如何使用 javascript 去除除 <a></an>、<img>(内部属性)和 <br> 之外的所有常规 html 标签?

javascript - 无法在 jquery-simple-datetimepicker 中设置 minDate 或 maxDate

javascript - mousewheel.scroll 在 Firefox 中不工作

javascript - 对象数组在 key 中存储相同的属性

c# - 在不同的屏幕分辨率上处理图片标签的更好方法。

javascript - 从对象数组到对象

Javascript:如果没有找到键,则在 json 数组中查找并推送到数组对象

javascript - 我如何使用 jQuery 获取页面内容并将其呈现在 div 中?

javascript - 如何在不改变图案的情况下改变 HTML5 Canvas 中图像的颜色

jquery - 嵌套的 Li 元素悬停备用背景颜色