我有一些条件字段,所以当用户更改字段时会显示一个新字段,我想要做的是删除以前选中的字段的值,该字段现在显示为无。
所以我试过了:
$(document).ready(function($){
if($('.field-type-list-integer').css('display') == 'none') {
$(this).closest("select option[disabled]").attr("selected", "selected");
}
});
问题在于它清除了每个字段的值并忽略了.css('display') == 'none'
条件。
这是HTML结构:
<div class="field-type-list-integer" id="edit-field-year-build-miladi" style="display: block;" checked="checked">
<div class="form-type-select">
<select id="edit-field-year-build-miladi-und" name="field_year_build_miladi[und]" class="form-select valid" placeholder="year">
<option value="_none" disabled="disabled" selected="selected">YEAR</option>
<option value="2015">2015</option>
<option value="2014">2014</option>
</div>
</div>
答案 0 :(得分:2)
问题在于这不是您期望的元素。在您的代码中,它只是document
。
如果您拥有更多.field-type-list-integer
,则可以使用each
将其循环播放。然后你可以简单地使用它来完成你想要做的事情。
$(document).ready(function($){
$('.field-type-list-integer').each(function(){
if ($(this).css('display') === 'none') {
$(this).find("select option").removeAttr("selected");
$(this).find("select option[disabled]").attr("selected", "selected");
}
});
});
另请注意,您必须手动删除所选选项以避免多个选定选项。
请参阅此小提琴,了解操作中的代码:http://jsfiddle.net/h6cbwvc9/