【发布时间】:2014-09-23 10:36:18
【问题描述】:
我一直在使用 jQuery 对 HTML5 表单进行排序,以根据选择菜单中的选定值显示/隐藏 div。但是我遇到了一个问题,如果选择了一个选项,那么它会被更改,原始选择及其 div 不会被隐藏,新的选择会添加到页面中,如果用户生成多个选择菜单更改他们在选择菜单中的选择。我希望一双新的眼睛能帮助并指出解决方案,因为我希望 div 根据值显示/隐藏,或者根本没有选择。
HTML 代码
<div class="country">
<h1>Pick country</h1>
<select class="country_option">
<option value="england">England</option>
<option value="scotland">Scotland</option>
<option value="ireland">Ireland</option>
<option value="wales">Wales</option>
</select>
</div>
<div class="not-selected">
<p>Please select a country to be able to pick the region.</p>
</div>
<div class="england" id="england">
<h3>Pick region in England</h3>
<select>
<option value="North">North</option>
<option value="South">South</option>
<option value="East">East</option>
<option value="West">West</option>
<option value="Midlands">Midlands</option>
</select>
</div>
<div class="scotland" id="scotland">
<h3>Pick region in Scotland</h3>
<select>
<option value="North">North</option>
<option value="South">South</option>
</select>
</div>
<div class="ireland" id="ireland">
<h3>Pick region in Ireland</h3>
<select>
<option value="Northern">Northern</option>
<option value="Republic">Republic</option>
</select>
</div>
<div class="wales" id="wales">
<h3>Pick region in Wales</h3>
<select>
<option value="North">North</option>
<option value="South">South</option>
</select>
</div>
jQuery 代码
$(document).ready(function(){
$('.england, .scotland, .ireland, .wales').hide();
$('.country_option').change(function() {
$('.not-selected').hide();
$('#' + $(this).val()).show();
});
});
或者,这里是CodePen link。我期待任何人为我目前的难题指出明显或不太明显的解决方案。
【问题讨论】:
-
我为这种场景写了 FieldState (mitya.co.uk/fieldState) - 避免混乱的 DOM 逻辑。这是用于您的示例的 Codepen:codepen.io/anon/pen/eHKgr
标签: javascript jquery html