0

alert() が 123、456、または n 番目のグループ キーを返すようにするにはどうすればよいですか?

インデックス キーを取得したいのは、対応するオプション値に対して連鎖操作を実行することです。

注: インデックス キーは英数字でもかまいません。

HTML:

<select name="option[group][123]">
    <option>a</option>
    <option>b</option>
</select>
<select name="option[value][123]">
    <option>1</option>
    <option>2</option>
</select>

<select name="option[group][456]">
    <option>a</option>
    <option>b</option>
</select>
<select name="option[value][456]">
    <option>1</option>
    <option>2</option>
</select>

脚本:

$("select[name^='option[group]']").change(function(){
  alert('Index:' + $(this).fieldsetIndexKeyIdentifier());
  // Do something with option values of group
});
4

2 に答える 2

2

次のように name 属性から解析できます。

$("select[name^='option[group]']").change(function(){
    var nums = this.name.match(/\[(\d+)\]$/)
    if (nums) {
        alert('Index:' + nums[1]);
    }
  // Do something with option values of group
});

ここでの動作デモ: http://jsfiddle.net/jfriend00/TcRzW/

または、名前の最後のインデックスから文字のシーケンスが必要な場合は、次のようになります。

$("select[name^='option[group]']").change(function(){
    var nums = this.name.match(/\[([^\]]+)\]$/)
    if (nums) {
        alert('Index:' + nums[1]);
    }
  // Do something with option values of group
});

ここでの動作デモ: http://jsfiddle.net/jfriend00/TcRzW/

作業中のグループ番号を知りたい場合は、次のように実行できます。

var selectGroups$ = $("select[name^='option[group]']");
selectGroups$.change(function(){
    var index = selectGroups$.index(this);
    // index will be a number like 0, 1, 2, 3 for which
    // sequential "select[name^='option[group]']" we are operating on.
});
于 2012-04-22T20:22:38.823 に答える
-1

これは質問に直接答えることはありませんが、私は次のような連鎖選択フィールドを達成しました。

$("select[name^='option[group]']").change(function(){
    var valueField = this.name.replace(/group/, 'value');
    $("select[name='"+ valueField +"']").somefunction(...);
});
于 2012-04-22T21:33:20.780 に答える