【发布时间】:2015-05-29 09:55:48
【问题描述】:
我是 jQuery 新手,希望这里有人可以帮助我。
我有一个带有 隐藏 div ('#requestDetails') 的大型 HTML 表单。
在这个 div 中,有复选框、单选按钮和带有特定类的特定值 ('.hiddenDefault') 的选择,用于仅在它们可见时应用默认值。
现在我有一个显示这个 div 的事件和另一个再次隐藏它的事件。
显示 div 时我想设置上述默认值。
隐藏它时我想重置字段,包括该 div 中的所有输入字段(即取消选中/取消选择它们并删除任何默认值或输入值)。
我有以下代码,乍一看似乎没问题,但我想知道这是否是正确/有效的代码,我是否在这里遗漏了什么以及是否有更好/更快的方法来实现相同的目标。
我的 jQuery:
$('[name=requestType]').on('change', function(){
if($(this).hasClass('triggerDiv')){
$('#requestDetails').find('.hiddenDefault').each(function(){
// set default values + show div
$(this).not('select').prop('checked', true);
$(this).not('input[type=checkbox], input[type=radio]').prop('selected', true);
});
$('#requestDetails').show();
}else{
$('#requestDetails').find('input, select').each(function(){
// empty / reset fields + hide div
$(this).find('input[type=checkbox], input[type=radio]').prop('checked', false);
$(this).find('input').not(':button, :checkbox, :hidden, :radio, :reset, :submit').val('');
$(this).find('select').prop('selected', false);
});
$('#requestDetails').hide();
}
});
非常感谢您对此提供的任何帮助, 迈克
【问题讨论】:
-
尝试改变 .prop('checked', true); to .attr('checked', true);
-
@Luca De Nardi:谢谢 - .prop 不是较新的功能吗?
-
它们看起来非常相似,我会进一步调查。同时尝试在这里检查它们之间的差异:api.jquery.com/prop
-
谢谢,卢卡! - 我的想法也是,如果有一种方法可以以某种方式将我在不同行中的内容组合起来,就像我认为在我的代码中循环一样,例如隐藏它们时遍历所有字段 3 次(每个 .find 一个)。
-
要一次设置所有这些,您还可以使用 $('#requestDetails input[type="checkbox"]').attr('checked', 'true')
标签: javascript jquery html find show-hide