在JavaScript中动态生成输入名称

And*_*ham 0 javascript php jquery concatenation

我正在尝试创建一个页面,用户可以根据需要向表中添加任意数量的行,然后将输入的值(表中每个单元格中有一个输入)传递回页面.

尝试使每个动态生成的输入框的名称不同时,我的问题就来了.我试图创建一个变量来实现它,但我正在使用的语法,在其他地方有效,在创建新元素时似乎不起作用.

这是有问题的代码:

    if ($_POST['dept_1'] != null){  //If there was an input
    $i = intval($_POST['num_of_rows']);
    while ($i != 0){
        $dept = $_POST['dept_' . $i];
        $hours = $_POST['hours_' . $i];
        echo $dept . " " . $hours . "\n";
        $i--;
    }
}
Run Code Online (Sandbox Code Playgroud)

.....

var i = 2;
        $("document").ready(function(){
            $("#newrow").click(function(e){
                $("#maintable").append('<tr> \
                                        <td><input type="text" name="dept_" + i size="5" maxlength="5" /></td> \
                                        <td><input type="text" name="hours_" + i size="5" maxlength="1" /></td> \
                                    </tr>');
                                    alert("dept_" + i);
                e.preventDefault();
                $("#hiddenvalue").attr("value", "" + i + "");
                i = i + 1;
            });
        });
Run Code Online (Sandbox Code Playgroud)

$ POST ['dept '.当$ i = 1时,$ i]工作,因为dept_1被写入页面的HTML中.

alert("dept_"+ i)有效,将i的值连接到字符串.

name ="dept_"+我不行.检查新元素,它的名字是"dept_ + i"

为什么会发生这种情况,我该如何解决?

iam*_*eed 5

不要让自己这么难.使用数组名称.

<td><input type="text" name="dept[]" size="5" maxlength="5" /></td>
<td><input type="text" name="hours[]" size="5" maxlength="1" /></td>
Run Code Online (Sandbox Code Playgroud)

使用$ _POST ['dept']和$ _POST ['hours']获取PHP中的值,这将返回漂亮的干净数组.