如果未填充所有字段,如何选择字段集、展开以及更改类?

Posted

技术标签:

【中文标题】如果未填充所有字段,如何选择字段集、展开以及更改类?【英文标题】:How to tab to fieldset, expand, and also change class if not all fields are populated? 【发布时间】:2012-10-19 01:18:01 【问题描述】:

我有一个动态构建表单的系统,其中一些可能包含 100 多个问题。这些问题中的每一个都包含大约 3 个不同的子问题/回答字段。子问题包含在一个 div 中:.dfcolumns 在页面加载时折叠,然后我使用 jquery 切换在单击问题/图例时展开它们。

我还需要在这里完成两件事:

    Tab 到下一个字段集并打开它。 (一次只打开一个会很棒,就像手风琴一样)

    如果所有子字段都已填充,则更改字段集/图例的类(我不是在这里寻找基本的表单验证,因为我希望在此过程中发生这种情况,而不是在点击提交时)。

基本上为了更好的用户体验,我想让他的用户能够浏览问题,并知道他们在此过程中完成了哪些问题。

html:

<div class="dform">
<div class="dform_element">
    <div class="dform_container">
        <fieldset>
        <legend>1. Question/Toggle Trigger</legend>
            <div class="dfcolumns">
                *a bunch of field types here…
            </div>
        </fieldset>
    </div>
</div>
<div class="dform_element">
    <div class="dform_container">
        <fieldset>
        <legend>2. Question/Toggle Trigger</legend>
            <div class="dfcolumns">
            <div class="dfcolumns">
                *a bunch of field types here…
            </div>
        </fieldset>
    </div>
</div>

CSS: .dfcolumns display: none;

切换功能:

    $(function()
    $("legend").click(function()
            $(this).parent().find(".dfcolumns").slideToggle("slow");
    );
);

这两个目标中的任何一个都可能实现吗?如果是这样,我有什么想法吗?

非常感谢您的任何意见!

【问题讨论】:

一切皆有可能,但您可能需要考虑查看表单向导插件。可见形式的选项卡将转到下一个字段,但如果字段被隐藏,它将被绕过,因此必须编写代码来处理它。您很可能会找到一个插件,它具有您需要的许多功能,而所需的手动编码却少了很多 【参考方案1】:

我使用 jquery 提供了简单的解决方案:

<ul class="nav nav-tabs"></ul>

<form class="fieldset-tabs">
    <fieldset>
        <legend>Tab 1</legend>
        **Tab 1 Cont**
    </fieldset>
    <fieldset>
        <legend>Tab 2</legend>
        **Tab Cont 2**
    </fieldset>
</div>

javascript 是:

jquery(function()
        $('.fieldset-tabs fieldset').each(function (index) 
            var text = $(this).addClass('tab tab-'+index).find('legend').text() ;
            $('.nav.nav-tabs').append('<li><a href="#" data-toggle=".tab-'+index+'">'+text+'</a></li>') ;
        );
        $('.nav.nav-tabs li a').click(function (e) 
            e.preventDefault() ;
            var $a = $(this);
            var $li =  $a.parent().addClass('active');
            $('.nav.nav-tabs li').not($li).removeClass('active');
            $('.fieldset-tabs fieldset.tab').not($a.data('toggle')).hide();
            $($a.data('toggle')).show();
        ).eq(0).trigger('click') ;
    );

【讨论】:

以上是关于如果未填充所有字段,如何选择字段集、展开以及更改类?的主要内容,如果未能解决你的问题,请参考以下文章

extjs4如何多次显示字段

如何更改多个填充的复选框输入字段值?

编辑时如何更改 UITextField

使用 JSON 数据填充 INPUT 和 SELECT

用零填充的 varchar(5) 字段中的第一个未使用的数字

填充4个字符后如何移动下一个输入选项卡