问题描述
|
我有两组这样的输入字段,按它们的类来区分:
<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
文本字段中change()
的.columnone
的对应字段中的值减去.columntwo
中每个输入字段的值?空值应视为零。
例如,在columntwo
的第一个输入字段的change()
上,从.columntwo
的第一个字段中减去.columntwo
的第一个输入字段的值。其他字段保持不变。
提前致谢!
解决方法
这有点令人费解,但是可以使用。这在您想双向触发函数的假设下起作用(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/
,假设您在类columnone或columntwo中没有其他元素,则可以
$(\'input.columntwo\').change(function() {
var $this = $(this);
$this.val(parseInt($(\'input.columnone\').eq($this.index()).val(),10) - parseInt($this.val(),10));
});