【问题标题】:Calling a dynamically named text input box php调用动态命名的文本输入框php
【发布时间】:2013-08-05 12:59:26
【问题描述】:

这是我拥有的命名代码:

    <?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 语句逐一查看每一行,但这不起作用。唉,我对整个动态命名的事情感到非常困惑。

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

【问题讨论】:

  • 您的if 语句未正确关闭..如果不是拼写错误
  • 您知道name 属性存在 HTML 语法错误吗?
  • 好吧,这段代码的 javascript 部分工作正常,可能只是错字,因为我并不担心它,因为它在这里并不真正相关。它更多地放在那里只是为了让人们问 myFunction 是什么
  • @Flosculus 不,我没有在 name 属性上收到语法错误
  • @Fred 是的,我会明白的

标签: php loops dynamic text naming


【解决方案1】:

试试:

<?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] 获取特定值。

【讨论】:

  • 它说未定义的索引和警告:为 foreach() 提供的参数无效
  • 我不想要特定的值,我需要能够提取具有该名称前缀的所有值
  • 我已经编辑过了,现在试试。你真的需要增加id吗?为什么不只使用一个类。
  • 我不知道。底线是我希望能够运行一个验证所有这些文本框输入并提交它们的函数,但到目前为止我无法访问文本框
  • 它仍然是 cavqty 的未定义索引
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2019-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多