0

タグwhileを含むテーブルを生成するPHPループがあります。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はループインスタンスです。したがって、position1の場合、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入力ボックス(position)+行番号のに設定したいと思います。form.position.valueステートメント内で2つを連結したいと思います。したがって、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

アドバイスや提案をいただければ幸いです。

どうもありがとう

4

2 に答える 2

1

If you want to use the bracket syntax you can't combine it with period syntax. In other words:

form.[position+row].value

should be:

form[position+row].value
于 2012-07-11T22:34:15.620 に答える
0

今100%働いています。

する必要があります

machineghostからのアドバイスに従ってform["position"+row].value。

于 2012-07-12T06:55:46.717 に答える