从动态表单获得更大价值的输入

时间:2015-05-27 07:27:29

标签: javascript jquery html

我有以下HTML,我想使用jQuery找出所有input元素,ida开头,其值大于idb开头。对于此示例,下面的结果将选择#a2#a3

<div class="form">
    <input id="a1" value="1" />
</div>
<div class="form">
    <input id="b1" value="5" />
</div>

<div class="form">
    <input id="a2" value="3" />
</div>
<div class="form">
    <input id="b2" value="1" />
</div>

<div class="form">
    <input id="a3" value="2" />
</div>
<div class="form">
    <input id="b3" value="1" />
</div>

<div class="form">
    <input id="a4" value="1" />
</div>
<div class="form">
    <input id="b4" value="5" />
</div>

...

2 个答案:

答案 0 :(得分:3)

您可以使用.filter()条件来比较两个值:

$('[id^=a]').filter(function(){
   return parseInt($(this).val(),10) > parseInt($(this).parent().next().find('input').val(),10) 
});

<强> Working Demo

更新:获取与条件匹配的元素的ID

$('[id^=a]').filter(function(){
    return parseInt($(this).val(),10) > parseInt($(this).parent().next().find('input').val(),10) 
}).map(function(){
    return $(this).attr("id");
}).get().join("-")

<强> Demo

答案 1 :(得分:2)

您可以使用'属性开头'选择器和filter()来实现此目的:

var $a = $('[id^="a"]').filter(function() {
    var aVal = parseInt($(this).val(), 10);
    var bVal = parseInt($(this).closest('.form').next().find('input').val(), 10);
    return aVal > bVal;
});

$a变量现在将包含a元素,其值高于其直接兄弟b

  

如何将id a =“”结尾处的所有数字输入数组?

为此,您可以使用map()

var aValues = $a.map(function() {
    return this.value;
}).get();
console.log(aValues); // shows all the larger A values gathered.