如何使用jQuery计算选定的html选择元素

时间:2014-04-07 19:17:54

标签: javascript jquery html

我在按下Add new(或whatver)按钮后添加了新的表单元素,创建了表单,然后是: http://phpmysqlmania.blogspot.com/p/dynamic-table-row-inserter.html

例如,我有:

    <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中:

    <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 each”......但是我可以让它只为1个元素工作,而不是第二个,第五个,hundreths ...我想我已经被困在如何使用了循环...; -O

有关如何使用动态创建的元素正确处理任何“事物”(计算,事件)的任何建议吗?

这是我从建议中尝试过的: http://jsfiddle.net/AftpY/15/

但问题是 - 音量没有更新,它只是在1个选择元素被更改时更新,但它不会“在飞行中”更新...而且你可以看到还有其他选择元素..

编辑:有什么想法吗?我真的被这个问题困扰了 - &gt;我无法理解(参见Jsfiddle链接): *)为什么在每个singleorfamily1选择之后不会刷新计数信息,但是当我改变第一次出现singleorfamily1时(在代码中看不到/找不到问题); *)如何计算混合选择值的结果:来自singleorfamily1&amp;来自selectedplan1的plan1,来自selectedplan2&amp;来自selectedplan2等的plan2 ......

TNX!

4 个答案:

答案 0 :(得分: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 :(得分: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

答案 2 :(得分: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;

答案 3 :(得分:0)

您可以在不同的事件中触发它,但重点是您只需检查所选的选项值,如

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

正在使用 Fiddle