javascript - 如何从动态html表中读取输入值?

标签 javascript php html

我有以下代码来从常规输入读取值,

HTML:

     <tr>
  <th>Email:</th>     
    <td><input id="email"  name="email" onchange="EmailValidate()" maxlength="50"></td>
  </tr>

PHP:

      file_put_contents($file, "\nEMAIL:", FILE_APPEND | LOCK_EX);

  $ret = file_put_contents($file, $_POST['email'], FILE_APPEND | LOCK_EX);

以同样的方式,我试图从动态生成的 html 表中读取输入值,但出现错误,

HTML:

     <table>
  <tr>
  <th>Number of Models:<title="Number of Models"></th>

  <td><select id="numbermodels" name="numbermodels"       onchange="buildTable(this.value); buildTable4(this.value);">

  <option value="1">1</option >
  <option value="2">2</option >
  <option value="3">3</option >
  <option value="4">4</option >
  <option value="5">5</option >
  <option value="6">6</option >
  </select></td>
  </tr>

  <tr>
  <th>Number of heads per model:</th>
  <td>
  <table id="contentTable" border="1" name="contentTable">
    <!-- Fill table programmatically -->
      </table></td>
  </tr>

Javascript:

      function buildTable(val)
      {
     var myTable =document.getElementById("contentTable");
    var j=val;
        var rows = [];
    var cells = [];

     while (myTable.hasChildNodes()) {
     myTable.removeChild(myTable.lastChild);
      }


      for( var i = 0; i < 1; i++ )
       {
       rows[i] = myTable.insertRow(i);
       if(i%3==2)rows[i].addClass("every3rdrow");
         cells[i] = [];

       for( var x = 0; x < j ; x++ )
      {
        cells[i][x] =document.createElement((x==0)?"th":"td");
        cells[i][x].innerHTML = (x==0)?"<input id=t onchange=ty() name=t>":"<input     id=t onchange=ty()>";
        rows[rows.length - 1].appendChild(cells[i][x]);
        }
        }

         }
             buildTable();  

         function ty(){
      $ad = document.getElementById("t").value;
      if(!/^-?\d*$/.test($ad)) {
       alert("Number of heads per model value must be numeric!");
       } 
       } 

为此,我也编写了类似的 PHP 代码,但我收到错误未定义索引 t, PHP:

      file_put_contents($file, "\n Number of Heads per Model:", FILE_APPEND | LOCK_EX);

$ret = file_put_contents($file, $_POST['t'], FILE_APPEND | LOCK_EX);

这是什么原因,可以进行哪些修改才能成功从动态 html 表中读取输入值?

最佳答案

一些建议:

  1. 元素 ID 必须是唯一的。您不应为每个输入 ID 使用“t”。您可以将其更改为 id="t_$i_$x"或类似的东西使其独一无二。

  2. 您需要让服务器端脚本知道 t是一个数组。要从提交的表单中获取所有值,请更改 name=t<input>元素模板至name="t[]" .

  3. 第 2 步将破坏您的验证功能。我会改变onchange=ty()onchange="ty(this)" 。然后您必须更改您的 ty()函数实现为:

    function ty(el) {
        if(!/^-?\d*$/.test(el.value)) {
            alert("Number of heads per model value must be numeric!");
        } 
    }
    

    因此,无需再次获取元素,从而简化了您的函数(当您在 onchange 事件中调用它时,只需传递它的一个实例即可)。

  4. 这不一定是必需的,但最好始终将 HTML 标记属性值括在引号中,正如我在上面的建议中所示的那样。

关于javascript - 如何从动态html表中读取输入值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18970920/

相关文章:

javascript - JavaScript 可排序 html 表格的问题

php - Laravel 作为客户端时,用于身份验证的 JWT 存储在哪里?

javascript - 无法读取 null 的属性 'load'

html - 我的一个 DIV 总是在最前面

javascript - JQuery Click 处理程序仅适用于第一个项目

javascript - 如何获得数学函数的真实值

javascript - 我如何将此搜索转换为类似于 ubuntu 搜索

javascript - 除了英语之外,还可以使用非英语字母字符 - React-Native

javascript - 将秒输出更改为分钟和小时

php - 从服务器文件夹中删除图像