假设我有一个1 + 7文本框的列。第一个框的名称是mm1,其他框分别是dd1,dd2,....,dd7。我想编写一个javascript函数,以便文本框dd1,dd2,...,dd7中的所有值都乘以N,如果我将N放在第一个文本框中,即mm1。我可以编写javascript函数,但如何在所有框中同时生效?我试过以下代码。但它只能影响一个盒子,具体取决于$ i的值。如果我们可以为$ i创建一个取值为1到7的循环,那么问题可能会得到解决。任何线索请。
<?php $i=3?>
<input type="text" size="1" id="mm1" name="mm1"
maxlength="2" onfocus="this.select()"
onkeyup="gft('dd<?php echo $i?>', 'mm1')"
>
答案 0 :(得分:0)
试试这个,使用class逻辑分组元素......
$('.mult').each(function(i,v){
var tt = parseFloat($(this).val());
$(this).attr('data-val',$(this).val());
});
$('.myVal').on('keyup',function(e){
var t = $(this).val();
if(!t) t = 0;
$('.mult').each(function(i,v){
if(t>0){
var tt = parseFloat($(this).attr('data-val')) * t;
$(this).val(tt);
}
});
});
找工作小提琴here
答案 1 :(得分:0)
我只使用JavaScript(没有jQuery)创建了JSFiddle:
HTML
v
的JavaScript
scala> valToString(True)(23)
res0: String = 23
scala> valToString(False)("foo")
res1: String = foo
我添加了一些功能来记住文本框最初的值。但是,如果您专门更改了7个文本框中的一个会成倍增加,您仍然可以更改它。
修改强>
如果您希望在更改其中一个值后将其相乘,也可以添加此项:
<input type="number" onkeyup="multiply(this)"/>
<input type="number" value="1" class="multiply-this"/>
<input type="number" value="2" class="multiply-this"/>
<input type="number" value="3" class="multiply-this"/>
<input type="number" value="4" class="multiply-this"/>
<input type="number" value="5" class="multiply-this"/>
<input type="number" value="6" class="multiply-this"/>
<input type="number" value="7" class="multiply-this"/>
答案 2 :(得分:0)
function gft(x){
n = 5;
c = x * n;
textInputs[0].value = c;
textInputs[1].value = c;
textInputs[2].value = c;
}
var textInputs = document.querySelectorAll('input[type=text]');
//this eventlistener is made to listen for key movement on all text fields that are of type text
for(i=0;i<textInputs.length;i++){
textInputs[i].addEventListener('keyup',function(){
//gft will execute an equation whenever one of these fields change
//also, it will change all the values inside the textfield simultaneously
gft(this.value);
},false);
}