jQuery:使用某个类设置/重置表单字段(改进代码)

时间:2015-05-29 09:55:48

标签: javascript jquery html find show-hide

我是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();
    }
});

非常感谢您提供任何帮助, 麦克

1 个答案:

答案 0 :(得分:1)

只需改进您编写的语法或代码风格:

$('[name=requestType]').on('change', function(){
    if($(this).hasClass('triggerDiv')){
        // show div + set default values
            $(this).not('select').prop('checked', true);
        $(this).not('input[type=checkbox], input[type=radio]').prop('selected', true);
            $('#requestDetails').show();
    }else{
        // hide div + reset fields
             $('#requestDetails').find('input[type=checkbox], input[type=radio], input, select').not(':button, :checkbox, :hidden, :radio, :reset, :submit').val('').prop('checked', false);             
             $('#requestDetails').hide();
    }
});

抱歉没有检查语法,所以如果我错了,请纠正我。 这不会改善你的表现,也不会在每个内容中写出来。