jQuery:如何从相应数组的数组中减去数组中每个文本输入字段的数值?

时间:2011-05-24 06:59:04

标签: jquery

我有两组这样的输入字段,按类别区分:

<div>
<input type="text" class="columnone" />
<input type="text" class="columnone" />
<input type="text" class="columnone" />
</div>

<div>
<input type="text" class="columntwo" />
<input type="text" class="columntwo" />
<input type="text" class="columntwo" />
</div>

需要进行必要的验证,以确保用户只能将整数值输入这些字段。

如何从.columntwo文本字段.columnone change()的相应字段中的值中减去.columntwo中每个输入字段的值?空值应该被视为零。

例如,在change()的第一个输入字段的columntwo上,从.columntwo中的第一个字段中减去.columntwo中第一个输入字段的值}。其他字段保持不变。

提前致谢!

2 个答案:

答案 0 :(得分:3)

假设您没有类columnone或columntwo的任何其他元素,您可以

$('input.columntwo').change(function() {
    var $this = $(this);
    $this.val(parseInt($('input.columnone').eq($this.index()).val(),10) - parseInt($this.val(),10));
});

答案 1 :(得分:2)

这有点令人费解,但它会奏效。这可以假设你想要双向触发函数(columntwo和columnone)

$('.columnone, .columntwo').change(function() {
    var $this = $(this);
    var sum = 0;
    var index = $this.index();

    if ($this.hasClass('columnone')) {
        var val1 = parseInt($this.val(), 10);
        var val2 = parseInt($('.columntwo:eq(' + index + ')').val(), 10);
    } else {
        var val2 = parseInt($this.val(), 10);
        var val1 = parseInt($('.columnone:eq(' + index + ')').val(), 10);
    }

    val1 = (isNaN(val1)) ? 0 : val1;
    val2 = (isNaN(val2)) ? 0 : val2;

    sum = val2 - val1;
    //console.log(sum);
    alert(sum);
});

这是小提琴:http://jsfiddle.net/fJLAw/