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 回答