0

.change ステートメントに渡されるフォーム要素のインデックスを取得する必要があります。

サンプル HTML フォーム コード

<tr><td>Question1</td><td><select class=list1 id=l[1] name=l[1]><option value=1>1<option value=2> 2 <option value=3> 3 </select></td><td><select class=hideme name=x[1] id=x[1]></select></td></tr>
<tr><td>Question2</td><td><select class=list1 id=l[1] name=l[2]><option value=1>1<option value=2> 2 <option value=3> 3 </select></td><td><select class=hideme name=x[2] id=x[2]></select></td></tr>
<tr><td>Question3</td><td><select class=list1 id=l[3] name=l[3]><option value=1>1<option value=2> 2 <option value=3> 3 </select></td><td><select class=hideme name=x[3] id=x[3]></select></td></tr>

ここで、ユーザーは最初のプルダウンから 1、2、または 3 を選択します。その選択に基づいて、2 番目のプルダウンにコンテンツがロードされます。

例 javascipt jquery 関数

$('.list1').change (function ()
 {
  // here is where I need to pick up the index ie: the [1] [2] or [3] as var id
  var selected = $("#l[id] option:selected");
  var pdata = 'subjectareaid='+selected.val();
  $.ajax({
    type   : "POST",
    cache  : false,
    url    : "subcat.php",
    data   : pdata,
    success: function(data) {
     $('#x[id]').html(data);
     $('#x[id]').removeClass('hideme');
    }
   });
 });

これにより、最初のプルダウンからの選択に基づいて、ajax 呼び出しによって返されたオプションを 2 番目のプルダウンに入力できます。

テーブルには 54 のプルダウンがあり、すべてに対してこのアクションを実行する必要があります (これは、フォーム送信時に mysql テーブルに入力するためです) プルダウンは (l[id]) プライマリ カテゴリ (x[id]) サブカテゴリです。サブキャットの選択は、メインの猫が選択されて select ステートメントが入力されるまで非表示になります。

4

2 に答える 2

0

$(this)の代わりに現在変更されている選択要素を取得できますvar selected = $("#l[id] option:selected");

jQuery のclosest() セレクターtrを使用して、その選択要素の親要素のインデックスに到達することで、変化する選択のインデックスに到達できます。

最後に、必要なコード ブロックは次のようになります。

  var selected = $(this);
  var selectedIndex = selected.closest("tr").index();     
  var pdata = 'subjectareaid='+selected.val()+"&index="+selectedIndex;
于 2013-07-14T10:03:27.443 に答える
0

まず、属性"の周りに二重引用符を追加します。これはベスト プラクティスであり、値にスペースを使用した場合のエラーを防ぎます。また、html が有効であることを確認してください。<option>タグを. で閉じていません</option>

単純な正規表現を使用して、select 要素のインデックスを取得できます。

$('.list1').change (function () {
    var id = $(this).attr('id');
    var matches = id.match(/^l\[([0-9]{1,})\]/);
    if (matches) {
        var index = matches[1];
    }
});
于 2013-07-14T10:19:40.510 に答える