当所有li元素都具有“ valid”类时,我想console.log()消息。目前其通过keyUp函数连接到我的输入。我下面的jQuery代码不起作用。谢谢
HTML:
<input class="confirmPwInput" type="password" name="confirm_password">
<input class="newPwInput" type="password" name="new_password">
<ul id="#pswd_info">
<li id="letter" class="invalid">At least
<strong>one letter</strong>
</li>
<li id="capital" class="invalid">At least
<strong>one capital letter</strong>
</li>
<li id="number" class="invalid">At least
<strong>one number</strong>
</li>
<li id="length" class="invalid">Be at least
<strong>10 characters</strong>
</li>
<li id="match" class="invalid">
<strong>Passwords must match</strong>
</li>
</ul>
Javascript:
$('.newPwInput,.confirmPwInput').keyup(function () {
$('#pswd_info li').each(function(){
if($(this).hasClass('valid')){
$(this).addClass('valid')
}
});
});
答案 0 :(得分:2)
在您的标记中搜索未设置li
类的.valid
标签。如果不存在,则所有li
都被视为有效。
if($('li:not(.valid)').length === 0) {
// Everything's valid
}
编辑:如果您不想检查页面上的全部 li
标签,请更详细地说明元素,例如{{1 }},以检查#pswd_info li
中某个元素内的列表元素。
来源:How to check if an element does NOT have a specific class?,https://api.jquery.com/length/
答案 1 :(得分:0)
当所有li元素都具有“有效”类时,我想console.log()消息。
因此,当没有li
没有“有效”类时,您要记录一条消息。
然后只需检查选择器li:not(.valid)
是否返回空列表即可。
使用香草JS,您会得到类似的东西:
if (document.querySelectorAll('li:not(.valid)').length === 0) {
console.log("Your message");
}
答案 2 :(得分:0)
当所有li元素都具有“有效”类时,我想console.log()消息
您可以比较2个jQuery选择器的内容,以检查它们是否都具有特定的类,例如
if( $('#pswd_info ul li').length == $('#pswd_info ul li.valid').length){
console.log('all li inside #pswd_info ul has the valid class');
}
答案 3 :(得分:0)
您没有显示用于实际添加标签的任何逻辑,但这将在所有(5)个字段均为.valid
时显示。但是,这种精确的方法并不能真正实现可持续性或可扩展性-最好删除无效标签,并寻找.invalid
等于0
的字段数。
$('.newPwInput,.confirmPwInput').keyup(function() {
var validCount = $('#pwd_info ul li.valid').length; // Count how many elements have the valid tag
console.log(validCount);
if (validCount == 5) {
console.log('All fields are valid');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="confirmPwInput" type="password" name="confirm_password">
<input class="newPwInput" type="password" name="new_password">
<ul id="#pswd_info">
<li id="letter" class="invalid">At least
<strong>one letter</strong>
</li>
<li id="capital" class="invalid">At least
<strong>one capital letter</strong>
</li>
<li id="number" class="invalid">At least
<strong>one number</strong>
</li>
<li id="length" class="invalid">Be at least
<strong>10 characters</strong>
</li>
<li id="match" class="invalid">
<strong>Passwords must match</strong>
</li>
</ul>