1

我有一个包含三个输入子组(各种)的表格。子组由类名(.group_1、.group_2、.group_3)表示。

我想做的是:

一旦特定类(例如 .group_1)的所有输入都已获得焦点(或已更改,两者都可以),则删除单独跨度的类(假设使用 removeClass)。如果特定类中的 5 个输入中只有 4 个已获得焦点(或已更改),则该类将保持在跨度上,直到第 5 个被关注或更改。

希望这是有道理的,在此先感谢您的帮助。

4

2 回答 2

3

像这样简单的事情怎么样:

http://jsfiddle.net/zerkms/7EUas/

var selectedMarkerClass = 'was-selected';

$('.group_1').on('focus', function() {
    $(this).addClass(selectedMarkerClass);

    if ($('.' + selectedMarkerClass).length == $('.group_1').length) {
        $('div').text('each input was selected at least once');
    }
});​

?

于 2012-09-10T23:01:57.557 回答
0

您可以使用一些伪类将输入标记为关注focus事件并检查它们是否都被关注。如果是,则从您的跨度中删除课程。

HTML:

<span class="group1 red">Test span</span>

<div id="group1-container">
    <input class="group1" type="text" />
    <input class="group1" type="text" />
    <input class="group1" type="text" />
    <input class="group1" type="text" />
    <input class="group1" type="text" />
</div>​

JavaScript:

group1Container$ = $('#group1-container');
group1$ = $('input.group1', group1Container$);
group1$.on('focus', function() {
    var input$ = $(this);
    input$.addClass('focused');
    if(!$('input.group1:not(.focused)', group1Container$).length) {
        $('span.group1').removeClass('red');
        group1$.off('focus');
    }
});

​演示

于 2012-09-10T23:11:08.123 回答