调用一个动态命名的文本输入框php

时间:2013-08-05 12:59:27

标签: php loops dynamic text naming

这是我的命名代码:

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

其中$housingcount只是从数据库中查询的行数($housingcount=mysql_num_rows($result))。

myFunction对于这个问题的上下文并不重要,因为它只是一个简单的求和函数,但无论如何它看起来像这样:

    <script>
    function myFunction(tBox)
    {
    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);
    document.getElementById('sum').innerText=sum;
    }
    </script>

因此,基于php代码,文本框的数量会根据这种情况下的外壳数量而变化。因此,文本框被动态命名(cavqty1,cavqty2,cavqty3,...),因为循环开始迭代。现在这个命名方法给我带来了很多麻烦,因为我不知道如何调用文本框名称以便将它们用于另一个函数。

经过研究,我认为我必须强制它们进入一个数组,并使用foreach语句逐个查看每一行,但这不起作用。唉,我对这整个动态命名事情感到非常难过。

我的问题是:如何调用动态命名的文本框,以便在其他函数中使用它们?

1 个答案:

答案 0 :(得分:0)

尝试:

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

然后在另一边你可以使用:

if(isset($_POST["cavqty"])){
    foreach($_POST["cavqty"] as $cavqty){
        echo $cavqty;
    }
}

或者只是:$_POST["cavqty"][0]表示特定值。