0

チェックボックスのJS検証があります。

function ActionCcdCheck (theForm)
{
    if (theForm.ccd_chk.checked)
    {
        theForm.ccd_pos[0].className = 'part';
        theForm.ccd_pos[1].className = 'part';
        theForm.ccd_pos[2].className = 'part';

        theForm.ccd_pos[0].disabled  = false;
        theForm.ccd_pos[0].checked  = false;
        theForm.ccd_pos[1].disabled  = false;
        theForm.ccd_pos[1].checked  = false;
        theForm.ccd_pos[2].disabled  = false;
        theForm.ccd_pos[2].checked  = false;
    }
    else
    {
        theForm.ccd_pos[0].disabled  = true;
        theForm.ccd_pos[1].disabled  = true;
        theForm.ccd_pos[2].disabled  = true;
    }
}

チェックボックス

<td colspan="1" rowspan="2" width="35">CCD</td>
<td>Check</td>
<td><input type="checkbox" name="ccd_chk" value="yes" class="part" onclick="ActionCcdCheck (this.form);" onkeypress="FocusChange (this.form, 5, 4);"/> Yes</td>
<tr>
<td>Position</td>
<td>
<input type="checkbox" name="ccd_pos[]" value="front" class="part" onkeypress="FocusChange (this.form, 6, 3);"/> Front
<input type="checkbox" name="ccd_pos[]" value="back" class="part" onkeypress="FocusChange (this.form, 7, 2);"/> Back
<input type="checkbox" name="ccd_pos[]" value="fb" class="part" onkeypress="FocusChange (this.form, 8, 1);"/> FB
</td>

<tr>

この name="ccd_pos[]" のようなチェックボックス名を付けると、問題に直面しています。JS 検証が機能していません。チェックボックスの複数の値を送信したいので、それを使用します。

誰でも私に提案を与えることができますか?ありがとう。

4

1 に答える 1

2

あなたのコードで:

theForm.ccd_pos[0]

ccd_posフォームのプロパティを探していますが、ありません。必要なものは次のようなものです:

theForm['ccd_pos[]'][0]

同じ名前のフォーム コントロールはコレクションとして返されるため、次のようになります。

theForm['ccd_pos[]']

name を持つ 3 つのコントロールのコレクションを返しますccd_pos[]。次に、通常のインデックス名を使用して、コレクションのさまざまなメンバーにアクセスします。

JavaScript では、ドット表記は正式なプロパティ アクセスへのショートカットであり、名前が識別子の規則に準拠している場合にのみ使用できることに注意してください。それ以外の場合は、角括弧 (正式な) 表記を使用する必要があります。

したがって、コードは次のようになります。

var box, boxes = theForm.['ccd_pos[]'];

for (var i=0, iLen=boxes.length; i<iLen; i++) {
  box = boxes[i];

  if (theForm.ccd_chk.checked) {
    box.className = 'part';
    box.disabled  = false;
    box.checked   = false;
  } else {
    box.disabled  = true;
    // and probably
    box.className = '';
  }
}
于 2013-05-27T03:07:19.217 に答える