我正在尝试根据框的值显示/隐藏输入字段块。如果我坚持使用 show() 和 hide() 效果很好,但是一旦我输入速度 show(100) 和 hide(100) 事情就会中断。
应该发生的是:
- 如果 select 的值是在数组中找到的项目,则应显示该块。
- 如果选择的值不是在数组中找到的项目,则不应显示该块。
- 如果选择的值是在数组中找到的项目并且该块是可见的,则不应发生任何事情。
jsFiddle 示例代码:http: //jsfiddle.net/PkBg6/
- 零售个人不应显示块
- 员工不应显示该块
- 其他一切都应该显示块
HTML
<div class="input-control select double-margin-right span3">
<label for="customerType">Customer Type</label>
<select data-required="false" id="customerType">
<option value="retailIndividual">Retail Individual</option>
<option value="retailBusiness">Retail Business</option>
<option value="dealer">Dealer</option>
<option value="raceTeam">Race Team</option>
<option value="membershipClub">Membership Club</option>
<option value="employee">Employee</option>
</select>
</div>
<div class="row clearfix" id="groupMember" style="display: none;">
<div class="input-control text span3">
<label for="businessName">Business Name</label>
<input type="text" id="businessName" data-required="true" />
</div>
<div class="input-control text span3">
<label for="department">Department</label>
<input type="text" id="department" data-required="false" />
</div>
</div>
JavaScript
$.fn.toggleFieldset = function(stringText, x) {
var arrayText = stringText;
for(var i = 0; i < arrayText.length; i++) {
if( $(this).val() == arrayText[i] ) {
$(x).show();
return;
}
else {
$(x).hide();
}
}
$(this).on('change', function() {
for(var i = 0; i < arrayText.length; i++) {
if( $(this).val() == arrayText[i] ) {
$(x).show(100);
console.log('show');
return;
}
else {
$(x).hide(100);
console.log('hide');
}
}
});
};
$(document).ready(function () {
$('#customerType').toggleFieldset(['retailBusiness', 'dealer', 'raceTeam', 'membershipClub'], '#groupMember');
});