1

我有一个带有复选框的树,它们的 id 具有项目的键和值作为它们的值。

<input type="checkbox" name="list_code[4]" id="list_code[4]" value="AG12345678" checked="checked">

当用户选择树元素时,我可以通过

$('input[name^="list_code"]').each(function() {
    if ($(this).attr('checked')) 
        list_code = $(this).val();
});

我能够获得价值AG12345678,但在这种情况下,我也需要4从 list_code[4] 获得键值。如何访问该值?

4

3 回答 3

3
var n = this.id.slice(this.id.indexOf('[') + 1, this.id.indexOf(']'));

或者...

var n = this.id.replace(/\D/g, '');

或者...

var n = (this.id.match(/\d+/) || [])[0];

或者如果可能有其他不需要的数字......

var n = (this.id.match(/\[(\d+)\]/) || [])[1];

或者,如果您控制源,一个好的解决方案是使用data-属性来支持未来的 HTML5...

<input type="checkbox" data-number="4" name="list_code[4]" id="list_code[4]" value="AG12345678" checked="checked">

...然后在 HTML5 浏览器中,您可以...

this.data.number;

...或者对于遗留支持,您可以这样做...

this.getAttribute('data-number');
于 2012-04-17T18:45:02.913 回答
2

有了这个:

this.getAttribute("id").split(/\[|\]/)[1];

解释:

  • this.getAttribute("id")获取 id"list_code[4]"
  • split(/\[|\]/)把它分成["list_code","4",""]
  • [1]获取索引处的1元素4
于 2012-04-17T18:46:13.727 回答
1

Try:

$('input[name^="list_code"]').each(function() {
    if ($(this).is(':checked')) 
        list_code = $(this).val();
        key = parseInt($(this).attr('name').replace(/[^0-9]/g,''));
});

If you find your field name attributes have numbers outside the index then do the following:

        key = parseInt($(this).attr('name').split('[')[1].replace(/[^0-9]/g,''));
于 2012-04-17T18:50:37.120 回答