1

探していたものがなかなか見つかりませんでしたが、何か明らかなものを見逃してしまったらごめんなさい。私は基本的に、フォームが送信されてデータベースに入力される前に、JavaScript関数でいくつかの選択ボックスのそれぞれが一意の値を持っていることを確認しようとしています。

選択ボックスはいくつあってもかまいませんが、すべて次の形式で同様の命名形式に従います。

operator_address_type_0
operator_address_type_1
operator_address_type_2
etc.

JavaScript関数を設定して、すべての選択ボックスをループし、ユーザーに警告して、同じ値が見つかった場合は送信を停止する方法を考えていました。

助けてくれてありがとう。

編集:

これが私の現在の選択ボックスの簡略化されたHTMLです。それらが含まれるテーブルはすべてデータベースのクエリからAJAXを介してロードされるため、私はそれを大幅に単純化する必要がありました。

<select name="operator_address_type_0">
<option value="Main">Main</option>
<option value="Payment">Payment</option>
<option value="Poster">Poster</option>
</select>

<select name="operator_address_type_1">
<option value="Main">Main</option>
<option value="Payment">Payment</option>
<option value="Poster">Poster</option>
</select>

そのようなものですが、将来的にはもっと多くのオプションがある可能性があります。メインアドレス、支払いアドレス、ポスターアドレスなどが1つしかないことを確認したいと思います。

4

1 に答える 1

4

次のようなものですか?

function checkDuplicates() {
  var selects = document.getElementsByTagName("select"),
      i,
      current,
      selected = {};
  for(i = 0; i < selects.length; i++){
    current = selects[i].selectedIndex;
    if (selected[current]) {
      alert("Each address type may not be selected more than once.");
      return false;
    } else
      selected[current] = true;
  }
  return true;
}

デモ: http: //jsfiddle.net/GKTYE/

これは、選択をループし、それぞれの選択されたインデックスを記録し、重複が見つかった場合は停止します。これは、すべての選択が同じ順序で同じオプションを持っていることを前提としています。実際に選択された値をテストするには:

 current = selects[i].options[selects[i].selectedIndex].value;
于 2012-04-09T16:11:56.433 に答える