2014-04-07 146 views
0

中选择元素,我创建的形式与按新增(或whatver)按钮,然后后添加新的表单元素: http://phpmysqlmania.blogspot.com/p/dynamic-table-row-inserter.html如何计算选择HTML使用jQuery

例如,我有:

<div id"row"> 
    <select id="singleorfamily1" style="width: 180px;" name="singleorfamily" > 
    <option value="0">Select Single or Family</option> 
    <option value="single">Single</option> 
    <option value="family">Family</option> 
    </select> 
    <select id="selectedplan1" name="selectedplan" style="width: 110px;" > 
<option value="0">Select Plan</option> 
<option value="plan1">Plan1</option> 
    <option value="plan2">Plan2</option> 
</select> 
    </div> 

当我按下添加新行,其添加的新选择元素插入行格:

<div id"row"> 
    <select id="singleorfamily1" style="width: 180px;" name="singleorfamily1" > 
    <option value="0">Select Single or Family</option> 
    <option value="single">Single</option> 
    <option value="family">Family</option> 
    </select> 
    <select id="selectedplan1" name="selectedplan1" style="width: 110px;" > 
<option value="0">Select Plan</option> 
<option value="plan1">Plan1</option> 
    <option value="plan2">Plan2</option> 
</select>  
    <select id="singleorfamily2" style="width: 180px;" name="singleorfamily2" > 
    <option value="0">Select Single or Family</option> 
    <option value="single">Single</option> 
    <option value="family">Family</option> 
    </select> 
    <select id="selectedplan2" name="selectedplan2" style="width: 110px;" > 
<option value="0">Select Plan</option> 
<option value="plan1">Plan1</option> 
    <option value="plan2">Plan2</option> 
</select> 
    </div> 

我试图做的工作(没有成功)以及我需要实现的 - 在这种情况下如何计算选定的单个和选定的族值(选择元素是动态的 - 它们可以是1或1000或更多)。光棍节:X,家庭:Y.

jQuery('#singleorfamily'+i).change(function() 

我试过“for”循环后,它们应该被计算,“每jQuery的” ......但我可以得到它的工作只是对于1元素,而不是第二,第五,hundreths ...我想我被干扰如何correclty使循环...; -O

如何正确处理任何“事情”(计算,事件)动态创建元素?

这是我已经从建议尝试: http://jsfiddle.net/AftpY/15/

但问题是 - 量不更新,它只是1个时选择有修改更新,但它“飞”不更新。 ..在那里你可以看到,还有其他选择元素...

编辑:任何想法?我很困扰这个问题 - >我无法理解(参见Jsfiddle链接): *)为什么计数信息在每个singleorfamily1选择后没有被刷新,但是当我改变singleorfamily1的第一次出现时(不能看到/找到问题在代码中);从singleorfamily1 &计划1从selectedplan1,有多少家庭从selectedplan2 &计划2从selectedplan2等多少单打...

TNX: *)怎么算混合选择值的结果!

+2

您可以发布您当前的代码? – Scimonster

+0

只要选择被更改并且使用jquery获取选定类的所有元素并使用计数,就可以将行为添加到行中。 – Banana

回答

1

这个工作对我来说:

$('#row select').change(function() { 
    var s = 0, 
     f = 0; 
    $('#row select').each(function() { 
     if ($(this).val() == 'single') s++; 
     if ($(this).val() == 'family') f++; 
    }) 
    console.log(s, f) 
}) 

jsFiddle example

+0

行!这可能是部分解决方案......但如果有更多选择不同选项的元素,该怎么办?正是因为这只是一个例子,我只把它放在了1个选择元素类型中。但实际上我有另一个选择元素(和其他选项)。那么,我怎么才能只使用1个选择元素类型使用名称/ ID?我需要将他们分别统计为每个家庭类型,计算每种计划类型,计数单打和计划1,单人计划2,家庭计划1,家庭计划2等... –

2

使用jQuery选择

jQuery('#row select').on("change",function(){ 
     var singlecount = (jQuery("#row :selected[value='single']").length); 
     var familycount = (jQuery("#row :selected[value='family']").length); 
    }); 

http://jsfiddle.net/QPcjB/13/

1

这里只是展示一个简单拨弄你怎么能在某个时间点取得当前的款项,而不是变更事件。http://jsfiddle.net/Aus2v/

//returns the number of selects with "single" chosen 
$('select :selected[value="single"]').length; 

//returns the number of selects with "family" chosen 
$('select :selected[value="family"]').length; 
0

您可以启动它在不同的事件,但主要的一点是,你只是检查所选的选项值一样

$('select option:selected').each(function(){ 
    if ($(this).val() == 'single'){ 
     i++; 
    }; 
    if ($(this).val() == 'family'){ 
     k++; 
    }; 
}); 

工作Fiddle