使用jQuery从HTML元素名获取密钥

使用jQuery从HTML元素名获取密钥,jquery,html,arrays,forms,Jquery,Html,Arrays,Forms,我有一个HTML表单,它对一些元素使用数组名,这样我就可以在以后的PHP中轻松地读取这些值,而不管我最终使用了多少个元素。例如: <select name="brand[1]">...</select> 。。。 在这些元素的jQuery.change()事件中,我想找到键是什么,即本例中的“1”。显然,我可以拆分name属性,看看剩下什么,但是有没有更合适的方法?我觉得应该有,但我似乎找不到一个合理的解决办法 谢谢。您可以添加一个html标记来标识密钥并在JQuery

我有一个HTML表单,它对一些元素使用数组名,这样我就可以在以后的PHP中轻松地读取这些值,而不管我最终使用了多少个元素。例如:

<select name="brand[1]">...</select>
。。。
在这些元素的jQuery.change()事件中,我想找到键是什么,即本例中的“1”。显然,我可以拆分name属性,看看剩下什么,但是有没有更合适的方法?我觉得应该有,但我似乎找不到一个合理的解决办法


谢谢。

您可以添加一个html标记来标识密钥并在JQuery中获取它。你会得到这样的结果:

<select data-key="1" name="brand[1]">...</select>

<script>
 $('select').change(function(){

    var theKey = $(this).data("key");
 });
</script>
。。。
$('select').change(函数(){
var theKey=$(this.data(“key”);
});

.match(/\[(\d+)\]/)[1]
应该可以。如果要使用自定义属性,至少要使用正确的
数据-
属性。这可能是我将得到的最整洁的答案,但不幸的是,我正在处理一个不是HTML5的旧项目,自定义属性会破坏w3与此项目的一致性:-(.这不是一个大问题。这在HTML4中不是100%正确/有效的用法,但通常也不会导致问题。哦,我没有想到使用正则表达式。但是似乎工作得不太好….match()似乎只返回一个值,并且它也包含[and]部分。我还尝试了/((\d+)/和/[([0-9]+)]/但结果是一样的-[1]是未定义的。有什么想法吗?抱歉,我使用了
g
标志。我通过删除该标志来更新答案,现在应该可以了。啊,可以了,谢谢!我很困惑…g修饰符不只是阻止匹配在第一次查找后结束吗?实际上,现在我已经编写了,我认为这对结果有意义=).我很快就会醒来的!
$('select').change(function(){
    var name = $(this).attr('name'),
    var key = name.match(/\[(\d+)\]/)[1];

    alert(key);
});