function validateForm(){ var x=document.forms["myForm"]["fname"].value; if (x==null || x=="") { alert("Enter Name"); return false; } var"> function validateForm(){ var x=document.forms["myForm"]["fname"].value; if (x==null || x=="") { alert("Enter Name"); return false; } var"> function validateForm(){ var x=document.forms["myForm"]["fname"].value; if (x==null || x=="") { alert("Enter Name"); return false; } var" />

ドロップダウンボックスの配列を検証しますか?

誰かが私を助けて、私がどこに間違っているのか見てください。

<script type="text/javascript">
function validateForm(){
var x=document.forms["myForm"]["fname"].value;
if (x==null || x=="")
  {
  alert("Enter Name");
  return false;
  }
var x=document.forms["myForm"]["car[]"].value;
if (x==null || x=="")
  {
  alert("Select Car");
  return false;
  }
}
  function add(tbl1) {
    var tb = document.getElementById(tbl1);
    var rowCount = tb.rows.length;
    var row = tb.insertRow(rowCount);
    var colCount = tb.rows[1].cells.length;
    for(var i=0; i
First name: <input type="text" name="fname">


2. Your previous cars

<table id="cars" border="1"> <tr><td width = "150">
Car
</td> </tr><tr> </td><td></td> </tr></table>

<input type="button" value="Add Row" onclick="add('cars')"/> <input type="submit" value="Submit"> </form>

私は車の配列を作成したので、もしpersonAがもっと車を持っているならば、addをクリックして別の車を選択することができます。彼らは1台の車を持っていて、名前と1台の車を入力すれば、フォームは機能しますが、私は「行を追加」をクリックして別の車を選択すると動作しません。

ありがとう

0

2 答え

あなたの問題は、 "car []"という名前のselect要素が1つ存在する場合、 document.forms ["myForm"] ["car []"] ) "car []"という名前のマルチプルセレクト要素があるとき。あなたの検証はそれが常に要素であると仮定しているので、失敗します。

document.forms ["myForm"] ["car []"] が配列であるかどうかをテストするか、または document.getElementsByName( " car [] ")は、繰り返し処理する要素の配列を常に返します。

配列が空であるか、最初の要素があなたの条件を満たしていない場合、 if は真と評価されます。

var x = document.getElementsByName("car[]");
if (x.length == 0 || x[0].value == null || x[0].value == "") { /* do stuff */ }

このソリューションは、最初のものだけが有効でなければならないと仮定しています(「車を取り除く」ボタンがない場合、これは最も魅力的なようです;もしそれがあなたの意図でないなら、それらを繰り返して、

1
追加された

同じ name 属性を持つ複数の入力フィールドを持つことはできません。 Add Row ボタンを押すと、コンボボックスは複製されますが、同じ名前を保持するので、 document.forms ["myForm"] ["car []"]。 は未定義になります。

これを修正する1つの方法は次のとおりです。

Make and change the inner loop of your JavaScript to the following:

newCell.innerHTML 
     = tb.rows[1].cells[i].innerHTML.replace("car[1]", "car["+rowCount+"]");

ただし、検証が完了するためには、各 car [x] を繰り返し処理する必要があります。

1
追加された
これを修正したいと思います:同じ name を持つ複数の入力フィールドが有効です(実際にはラジオボタンで必要です)、一意でなければならないのは id です。
追加された 著者 Matt,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript