我通过代码动态生成了 html,它在浏览器中呈现如下:
<div class="required">
<label class="col-sm-3 control-label text-danger">Contact Details</label>
<div id="dynamic-contact-details" class="col-sm-4">
<div id="count0" class="space form-group has-error"><div class="col-sm-4">
<select id="contact-type0" class="form-control"><option value="">Select</option><option value="Phone">Phone</option><option value="Whatapp">Whatapp</option><option value="Facebook">Facebook</option><option value="Web">Web</option><option value="Fax">Fax</option></select>
<small id="contact-type0" class="text-danger">Contact Type is Required</small>
</div>
<div class="col-sm-7">
<input type="text" name="contact-type-value0" id="contact-type-value0" class="form-control">
<small id="contact-type-value0" class="text-danger">Contact Type Value is Required</small>
</div>
<button value="count0" class="remove_field btn btn-danger"><i class="fa fa-trash"></i></button>
</div>
<div id="count1" class="space form-group has-error"><div class="error">
<div class="col-sm-4">
<select id="contact-type1" class="form-control"><option value="">Select</option><option value="Phone">Phone</option><option value="Whatapp">Whatapp</option><option value="Facebook">Facebook</option><option value="Web">Web</option><option value="Fax">Fax</option></select>
<small id="contact-type1" class="text-danger">Contact Type is Required</small>
</div><div class="col-sm-7">
<input type="text" name="contact-type-value1" id="contact-type-value1" class="form-control">
<small id="contact-type-value1" class="text-danger">Contact Type Value is Required</small>
</div>
<button value="count1" class="remove_field btn btn-danger"><i class="fa fa-trash"></i></button>
</div></div>
<div id="count2" class="space form-group has-error"><div
....
</div>
</div>
</div>
请注意,当相应的输入保持空白并单击保存按钮时,has-error
类将附加到 div。当输入被填充时,has-error
类将从 div 中移除。现在我想从标签中删除类 text-danger
仅当 dynamic-contact-details
中的所有 div 都不包含 有错误
类。
我尝试了以下代码行,但它不起作用。
$('#dynamic-contact-details').on('change', ':input', function() {
$(this).closest(".form-group").removeClass("has-error");
$(this).next('small').addClass('hide');
if($(this).find('div.has-error').length == 0)
{
$(this).closest(".form-group").parent().parent().find(".control-label").removeClass("text-danger");
}
});
请帮助我找到更好的方法。
最佳答案
您需要检查 id
为 dynamic-contact-details
的元素内的 has-error
类的长度,以便您需要像这样更改 if
条件:
$('#dynamic-contact-details').on('change', ':input', function() {
$(this).closest(".form-group").removeClass("has-error");
$(this).next('small').addClass('hide');
if($('#dynamic-contact-details').find('.has-error').length == 0)
{
$(this).closest(".form-group").parent().parent().find(".control-label").removeClass("text-danger");
}
});
关于javascript - 如何检查所有其他 div 是否包含输入事件的特定类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48644139/