0
<script type="text/javascript">
var i = 1;
function generateRow() {
var d=document.getElementById("div");
d.innerHTML+="<p><input type='text' name='[Post][textbox1][" + i + "]'>";
i = i + 1;
}

<?php $this->Form->input('textbox1',array(
                'type' => 'textbox',
                'label' => false,
                'required')); ?>
              <div id="div"></div>

    <input type="button" value="Add" onclick="generateRow()"/>

Textbox1 の HTML

<div class="input textbox"><input name="data[Post][textbox1]"
 required="required"type="textbox" id="PostTextbox1"/></div>

「追加」ボタンをクリックすると、新しいテキストボックスが生成さname="[Post][textbox1][1]" れ、そのボックスにデータを入力できますが、

問題1

もう一度追加ボタンをクリックすると、すべてのテキストボックスがリセットされ、それらのデータを再度入力する必要があります

問題2

$tbVal = $this->request->data['Post']['textbox1'];
$inn = implode(',',$tbVal);

このコードを使用してテキストボックスからデータを内破すると、最初のデータのみが表示されます

4

3 に答える 3

1

最初の回答と私の回答に基づく実例を次に示します。

<script type="text/javascript">
var i = 1;
function generateRow() 
{

    //Create an input type dynamically.
    var element = document.createElement("input");
    //Assign different attributes to the element.
    element.setAttribute("type", "text");
    element.setAttribute("value", "");
    element.setAttribute("name", "data[Post][textbox][" + i + "]");
    var foo = document.getElementById("fooBar");
    //Append the element in page (in span).
    foo.appendChild(element);

    i = i + 1;

}
</script>

<form>

<div id="fooBar" class="input textbox">
    <input name="data[Post][textbox][0]" required="required" type="textbox" id="PostTextbox1"/>
</div>

<input type="button" value="Add" onclick="generateRow()"/>
<input type="submit" >
</form>

<?php
print_r($_REQUEST);
?>

テキスト値をリセットせず、テキスト ボックスに適切な名前を使用するには、DOM 操作 JavaScript 関数を使用する必要があります。

于 2013-09-16T11:12:48.493 に答える
0

問題2について

このコード:

d.innerHTML+="<p><input type='text' name='[Post][textbox1][" + i + "]'>";

でなければならない

d.innerHTML+="<p><input type='text' name='data[Post][textbox1][" + i + "]'>";
于 2013-09-16T09:44:31.903 に答える