簡體   English   中英

如何從動態html表讀取輸入值?

[英]how to read the input values from a dynamic html table?

我有以下代碼從常規輸入中讀取值,

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是一個數組。 要從提交的表單中獲取所有值,請將<input>元素模板中的name=t更改為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標記屬性值括在引號中是一種好習慣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM