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>

これらの入力の別のセットを追加するために 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 配列全体を設定するにはどうすればよいですか?

4

3 に答える 3

2

type構文を見てください。name

 type="text name="hours[]"

これはあるべきです

 type="text" name="hours[]"
于 2013-06-19T04:31:58.190 に答える