【问题标题】:Concatenate Variable Onto Form Input Value Using Javascript使用 Javascript 将变量连接到表单输入值
【发布时间】:2012-07-11 21:43:14
【问题描述】:

我有一个 PHP while 循环,它生成一个包含 input 标记的表。通过附加输入框名称和循环值,为每个输入框指定一个唯一名称。

<?php
$i=1;
$r=0;
while($i<=$positionjobrows)
{
    ?>
    <tr>
        <td>
            <?PHP echo $i; ?>
        </td>
    <td>
    <input type=text NAME="position<?PHP echo $i; ?>" id="position<?PHP echo $i; ?>"  style="border: 1px solid #2608c3;color:red; width=200px" value="<? echo mysql_result($resultpositionjob,$r,0);?>"> 
    </td>
    <td>
    <input type=text NAME="job<?PHP echo $i; ?>" id="job<?PHP echo $i; ?>"  style="border: 1px solid #2608c3;color:red; width=200px" value="<? echo mysql_result($resultpositionjob,$r,1);?>"> 
    </td>
    <td>
    <SELECT NAME="person<?PHP echo $i; ?>" id="person<?PHP echo $i; ?>" style="border: 1px solid #2608c3;color:red; width=200px" onchange="get(<? echo $i; ?>);"> 
    <OPTION VALUE=0 >
    <?=$optionpeople?> 
    </SELECT>
    </td>
    <td>
    <div id="training<?PHP echo $i; ?>"><font color=grey size=2>Training details will be shown here</div>
    </td>
    </tr>
    <?PHP
    $i++;
    $r++;
    }
    ?>

我正在尝试修改我的 javascript / jquery 脚本以使用每个生成的输入框名称。

例如,输入框位置将命名为 position1、position2、position3 等。我使用 onchange="get(row)" 调用脚本,其中 row 是循环实例。所以对于位置 1,onchange 将是 onchange"get(1)"

这是传递给我的 javascript / jquery 脚本的:

<script type="text/javascript">
        function get(row){

        $.post ('getpeopleinjobs.php',{ 
        postvarposition: form.[position+row].value,
        postvarjob: form.job+row.value, 
        postvarperson: form.person+row.value, 
        postrow: row}, 
            function(output){
                $('#training'+row).html(output).show();
                    });
        alert(postvarposition); 

        }

</script>

如您所见,我想将变量 postvarposition 设置为输入框的id(位置)+ 行号。我想在form.position.value 语句中将两者连接在一起。因此 get(1) 将产生:

postvarposition: form.position1.value

我的想法是这样的,但没有奏效:

postvarposition: form.[position+row].value,

如何将输入框的名称与行连接起来?

一如既往地感谢您的帮助。

更新

下面的代码适用于我手动将“1”附加到输入标签名称的第一行。

<script type="text/javascript">
        function get(row){
        alert(row);
        $.post ('getpeopleinjobs.php',{ 
        postvarposition: form.position1.value,
        postvarjob: form.job1.value, 
        postvarperson: form.person1.value, 
        postrow: row}, 
            function(output){
                $('#training'+row).html(output).show();
                    });
                }
</script>

然后我尝试按照 machineghost 的建议进行更改,但这仍然不起作用。我已经确认变量 row 的值为 1 并带有警报消息。

<script type="text/javascript">
        function get(row){
        alert(row);
        $.post ('getpeopleinjobs.php',{ 
        postvarposition: form[position+row].value,
        postvarjob: form[job+row].value, 
        postvarperson: form[person+row].value, 
        postrow: row}, 
            function(output){
                $('#training'+row).html(output).show();
                    });
                }
</script>

Google Chrome (F12) 输出错误Uncaught ReferenceError: position is not defined

任何意见或建议将不胜感激。

非常感谢

【问题讨论】:

    标签: javascript jquery variables concatenation


    【解决方案1】:

    如果您想使用方括号语法,则不能将其与句点语法结合使用。换句话说:

    form.[position+row].value
    

    应该是:

    form[position+row].value
    

    【讨论】:

      【解决方案2】:

      现在 100% 工作。

      应该是

      form["position"+row].value 根据 machineghost 的建议。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-30
        • 1970-01-01
        相关资源
        最近更新 更多