求和文本输入,其中输入数量基于for循环而变化

时间:2013-07-25 18:36:05

标签: php javascript mysql loops onchange

好的,这就是问题所在。我目前有一个成功汇总所有输入框的JavaScript。

    <script>
    function myFunction(tBox)
    {
    var a=document.getElementById("hous1");
    var b=document.getElementById("hous2");
    var c=document.getElementById("hous3");
    w=Number(a.value);
    x=Number(b.value);
    y=Number(c.value);
    t=w+x+y;
    document.getElementById("test").innerHTML=t;
    }
    </script>

动态创建文本输入框的数量,并根据以下内容给出唯一名称:

   <?php
   for ($i=1; $1<=$housingcount; $i++){
   echo '<input size="',11,'" type="text" name="cavqty',$i,'" id="hous',$i,'" onchange="myFunction(value)"/>
   ?>

其中$ housingcount只计算与mysql查询匹配的行数。 此外,该功能只需输出:

    <p id="test"></p>

只要文本输入框的数量等于3,此代码就可以正常工作。我的问题是如何编写我的javascript以便能够接收任意数量的文本输入,而不是限制为预定义的数字,例如三个?

2 个答案:

答案 0 :(得分:2)

您必须检查所有输入元素并检查其名称,检查前缀&#34; hous&#34;。例如:

var sum = 0;

var elts = document.getElementsByTagName('input');
for( var i=0; i<elts.length; i++ ) {
    var elt = elts[i];
    if( elt.id && elt.id.indexOf( 'hous' ) === 0 ) sum += Number( elt.value );
}

console.log( sum );

此解决方案不需要jQuery。在这里看到它:

http://www.codepen.io/anon/pen/xmrGu

答案 1 :(得分:0)

我不知道我是否理解正确,但这可以总结你所有的输入,考虑到只有整数,如果你想漂浮,只要告诉我,我会发现。

HTML

<input size="11" type="text" name="cavqty" id="hous" onkeyup="myFunction(this.value)"/>
<input size="11" type="text" name="cavqty" id="hous" onkeyup="myFunction(this.value)"/>
<input size="11" type="text" name="cavqty" id="hous" onkeyup="myFunction(this.value)"/>

的Javascript

totalSum = 0;
myFunction = function (value) {
    totalSum += parseInt(value, 10);
    console.log(totalSum);
}

您可以看到Jsfiddle

工作