2013-09-24 56 views
1

我有下面的代碼從一個普通的輸入讀取的值,如何從動態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表中的輸入值?

+0

有幾件事情:輸入ID的** **必須是唯一的。你不應該爲每個輸入ID使用「t」。同樣,你需要讓't'成爲一個數組。將'name = t'改爲'name = t []''。 –

回答

0

幾點建議:

  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標籤的屬性值加引號,正如我在我的建議已經證明以上。

+0

謝謝,它正在工作,但現在要顯示文本文件中的數組內容,我的代碼是:$ ret = file_put_contents($ file,$ _POST ['t'],FILE_APPEND | LOCK_EX); \t \t $ RET = file_put_contents($文件,$ _POST [ 'T1'],FILE_APPEND | LOCK_EX);但它只顯示數組的第一個和最後一個元素與上面的代碼,我想我必須使用for循環,但如何從PHP中讀取js函數的x值? – Sachin