0

背景 PHP がデータベースから生成するフォームがあります。ディナーイベントの座席登録ページです。各[ディナー]テーブルは、レセプションへのチケットを一定数受け取ります。たとえば、10 席のテー​​ブルには、ガラ レセプションのチケットが 7 枚、チェアマンズ レセプションのチケットが 3 枚ある場合があります。

各行には、プレフィックスを配列に格納するプレフィックス値があり、ループスルーして値を取得します。次のようになります。

<select name='prefix[]'  onchange='prefixCheck(this.value)' >
    <option value=''>Select</option>
    <option value='Mr.'selected >Mr.</option>
    <option value='Ms.' >Ms.</option>
    <option value='Dr.' >Dr.</option>
    <option value='Sen.' >Sen.</option>
    <option value='Sec.' >Sec.</option>
    <option value='Rep.' >Rep.</option>
</select>

フォームにはさまざまな数のprefix[]フィールドがあります。また、私のページの上部には、現在テーブルにあるガラとチェアマンのレセプション チケットの数のカウンターがあります。

<td align = left>
    Total Gala Reception Tickets Available:
</td>
<td align = center>
    <input  type='text' size='2' id='gala' name='gala' value=7 style='background-color:#C8C8C8  '>
    <input  type='hidden' size='2' id='gala_orig' name='gala' value=7 >
</td>
 </tr>
 <tr>
    <td align = left>
        Total Chairman's Reception Tickets Available
    </td>
    <td align = center>
        <input type='text' id='chairman' name='chairman' size='2' value=3 style='background-color:#C8C8C8  '>
        <input type='hidden' id='chairman_orig' name='chairman' size='2' value=3 >
    </td>
 </tr>

目的Sen.Sec.、 のプレフィックス値Rep.は特別です。つまり、ユーザーが座席ごとにこれらのいずれかを選択すると、 のカウントがgala減少し、 の数がchairman増加します。私はこのJavaScript関数を持っていますが、私は重要な部分のようです。ユーザーが を選択Sen.すると、アクションが発生しますが、別の修飾プレフィックスを選択すると、アクションが再び発生します。ガラを減らし、椅子を増やします。

function prefixCheck(v){
                gala_limit = document.getElementById('gala').value;
                chair_limit = document.getElementById('chairman').value;

                if(v == 'Sec.' || v == 'Sen.' || v == 'Rep.'){
                    gala_limit--;
                    chair_limit++;

                    document.getElementById('gala').value = gala_limit;
                    document.getElementById('chairman').value = chair_limit;
                }
                else{
                    document.getElementById('gala').value = document.getElementById('gala_orig').value;
                    document.getElementById('chairman').value = document.getElementById('chair_orig').value
                }

            }

prefix配列のオブジェクト構造を変更したくありません。私は何が欠けていますか?

4

2 に答える 2

0

あなたのprefixCheck関数には、現状ではこれを行うのに十分な情報がありません。

重要なことに、chair_limit現在カウントが 0 を超えている場合は、現在のゲストの 1 人以上が議長のレセプションの資格があるためです。したがって、プレフィックスが選択されているchair_limit場合、プレフィックスが適格であり、前のプレフィックスが適格ない場合にのみ、を増やす必要があります。ご指摘のとおり、 から に切り替えても、どちらのカウントも変わらないはずです。Sen.Sec.

ただし、prefixCheck現時点では、この関数にはこの区別を行うための情報が不十分です。新しい値古い値の両方を引数として渡すと、正しく計算を実行できます。

(そして、コインの反対側を実装することを忘れないでください-つまり、誰かがegからに切り替えた場合にデクリメント chair_limitおよびインクリメントすることです)gala_limitSec.Mr.

于 2012-07-20T14:54:08.337 に答える