2013-06-19 74 views
0

我有一組輸入(收費)的表單(發票)。POST值未按預期返回

<tr> 
    <td><label>Description:</label></td> 
    <td><input type="text name="description[]" value="'.$labor->description.'" /></td> 
    <td><label>Hours:</label></td> 
    <td><input type="text name="hours[]" value="'.$labor->hours.'" size="2" /></td> 
    <td><label>Rate:</label></td> 
    <td><input type="text name="rate[]" value="'.$labor->rate.'" size="2" /></td> 
    <input type="hidden" name="labor_id[]" value="'.$labor->id.'" /> 
</tr> 

我正在使用javascript函數來添加另一組這些輸入。

function moreLabor(table) { 

    var table = document.getElementById(table); 
    var row = table.insertRow(-1); 

    var descriptionLabel = document.createElement("label"); 
    descriptionLabel.innerHTML="Description:"; 
    var description = document.createElement("input"); 
    description.name = "description[]"; 
    description.type = "text"; 

    var td1 = row.insertCell(-1); 
    var td2 = row.insertCell(-1); 
    td1.appendChild(descriptionLabel); 
    td2.appendChild(description); 

    var hoursLabel = document.createElement("label"); 
    hoursLabel.innerHTML="Hours:"; 
    var hours = document.createElement("input"); 
    hours.name = "hours[]"; 
    hours.type = "text"; 
    hours.size = 2; 
    hours.value = 1; 
    var td1 = row.insertCell(-1); 
    var td2 = row.insertCell(-1); 
    td1.appendChild(hoursLabel); 
    td2.appendChild(hours); 

    var rateLabel = document.createElement("label"); 
    rateLabel.innerHTML="Rate:"; 
    var rate = document.createElement("input"); 
    rate.name = "rate[]"; 
    rate.type = "text"; 
    rate.size = 2; 
    rate.value = 25; 

    var td1 = row.insertCell(-1); 
    var td2 = row.insertCell(-1); 
    td1.appendChild(rateLabel); 
    td2.appendChild(rate); 

    var remove = document.createElement("input"); 
    remove.type = "button"; 
    remove.value = "Remove"; 
    remove.onclick = function() { 
     var parent = this.parentNode.parentNode; //get the row node 
     table.deleteRow(parent.rowIndex); //Delete the row index behind it. 
    }; 
    var td1 = row.insertCell(-1).appendChild(remove); 

} 

正如您所看到的,我在重複輸入名稱後使用了[]。問題是POST只返回每個值的最後一組值。我查看了原始查詢字符串,它也只包含最後一組值。速率,小時和描述將作爲數組返回,但每個值只設置1個值。如何填充整個POST數組?

回答

2

看看你的語法,你已經聯合typename

type="text name="hours[]" 

這應該是

type="text" name="hours[]" 
0

男人,我覺得自己像個白癡。當我用彩色註釋看到我的問題時,我注意到在輸入=「文字後缺少」s

+3

這就是爲什麼智能編輯器和IDE有這麼多建議。 。 。 :-) – Fallen

0
<tr> 
    <td><label>Description:</label></td> 
    <td><input type="text name="description[]" value="'.$labor->description.'" /></td> 
    <td><label>Hours:</label></td> 
    <td><input type="text name="hours[]" value="'.$labor->hours.'" size="2" /></td> 
    <td><label>Rate:</label></td> 
    <td><input type="text name="rate[]" value="'.$labor->rate.'" size="2" /></td> 
    <input type="hidden" name="labor_id[]" value="'.$labor->id.'" /> 
</tr> 


should be 

<tr> 
    <td><label>Description:</label></td> 
    <td><input type="text" name="description[]" value="'.$labor->description.'" /></td> 
    <td><label>Hours:</label></td> 
    <td><input type="text" name="hours[]" value="'.$labor->hours.'" size="2" /></td> 
    <td><label>Rate:</label></td> 
    <td><input type="text" name="rate[]" value="'.$labor->rate.'" size="2" /></td> 
    <input type="hidden" name="labor_id[]" value="'.$labor->id.'" /> 
</tr>