$('.input-group').each(function() {
$mainElement = $(this);
$sibling = $mainElement.next('.form-control');
$sibling.change(function($mainElement) {
return function() {
$mainElement.removeClass('has-error');
}
}($mainElement)); });
<div class="form-group">
<label>Organization</label>
<div class="input-group has-error">
<input type="text" class="form-control" name="organization" />
<!--added code-->
<span class="input-group-addon"><span class="glyphicon glyphicon-remove"></span></span>
</div>
</div>
<div class="form-group">
<label>Address</label>
<div class="input-group has-error">
<input type="text" class="form-control" name="address" />
<!--added code-->
<span class="input-group-addon"><span class="glyphicon glyphicon-remove"></span></span>
</div>
</div>
在我尝试.each()
解决方案here
我使用了twitter bootstrap,用于在我优先考虑的PHP后端验证后显示.has-error
类。现在,我想要移除.each()
.has-error
个类,以了解那些.form-control
下.input-group
内发生的任何更改。
注意......我不想在这里使用jQuery验证。
有人在此提供了最佳答案,并在下方提供了一个链接:
https://www.jsnippet.net/snippet/324/remove-class-haserror-when-field-was-changed
我按照这样修改了它:
$('.input-group').each(function(){
$(this).find('.form-control').change(function(){
$(this).closest('div').removeClass('has-error');
});
});
现在当我修改我的代码时,我添加了:
$('.input-group').each(function(){
$(this).find('.form-control').change(function(){
$(this).closest('div').removeClass('has-error').closest('span').removeClass('glyphicon-remove');
});
});
同样的事情我希望在.form-control字段发生变化后删除glyphicon-remove类,就像has-error类一样。
我播放了代码,但仍然存在glyphicon-remove类。
答案 0 :(得分:0)
不确定您要执行的操作:只需从已更改的<input>
的父级中删除.has-error类?
$('.input-group .form-control').change( function() {
$(this).parent().removeClass('has-error');
});
答案 1 :(得分:0)
如果元素具有类
,则可以简单地附加事件$(function(){
$('div.input-group.has-error').each(function(){
$(this).find('input').change(function(){
$(this).closest('div').removeClass('has-error');
});
});
});
答案 2 :(得分:0)
您需要做一些更改:
$('.form-control').find('input[type="text"]').on('input', function() {
$(this).closest('.input-group').removeClass('has-error');
});
change
事件在输入类型文本上使用keydown
,因为只有当您从元素中释放焦点时才会发生更改事件。$(this)
进入具有.closest()
的所需父级的上下文,然后从中删除该类。
$(':input').on('input', function(e){
console.log('type', e.type);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' >
&#13;
答案 3 :(得分:0)
使用$(document).on('input'...
监控动态和静态元素的所有更改:
$(document).on('input', '.form-control', function(){
$(this).closest('.input-group').removeClass('has-error');
});