我有这样的结构:
<input type='text' name='value[$x]' class='kp'>
<input type='text' name='value[$y]' class='kp'>
的jQuery
$( ".kp" ).keyup(function() {
$('input[name^="value"]').each(function() {
***** HERE I WANT TO PRINT THE $x/$y VALUE INSIDE [] *****
});
});
就像我的代码所说,我想获得数组的$ x / $ y变量。 (使用.val();函数我在文本框中获取字符串)
有办法吗? 谢谢!
答案 0 :(得分:7)
您可以使用$(this)
内的each
来访问当前元素,并使用name
属性上的正则表达式来提取值。
$(this) // Current element in the loop
.attr('name') // Get the `name` attribute value
.match(/\[(.*?)]/)[1]; // Match string inside square brackets
$(this).attr('name')
将获取当前输入的name
属性值\[(.*?)]
将匹配方括号内的任何内容,并将字符串添加到第一个捕获的组[1]
将字符串放在方括号内。
$(".kp").keyup(function() {
$('input[name^="value"]').each(function() {
console.log($(this).attr('name').match(/\[(.*?)]/)[1]);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' name='value[11]' class='kp'>
<input type='text' name='value[22]' class='kp'>
答案 1 :(得分:0)
如其他答案中所述,您可以使用$(this)
访问回调中的当前元素。
但是我不会依赖正则表达式来提取整数值。
每个函数接收两个参数,第一个是索引,第二个是元素(相当于this
)。
如果值是连续的并且从0开始,则可以将第一个参数用于每个回调:
<input type='text' name='value[0]' class='kp'>
<input type='text' name='value[1]' class='kp'>
$( ".kp" ).keyup(function() {
$('input[name^="value"]').each(function(index, element) {
console.log(index);
});
});
如果没有,我会建议在html中添加一个数据属性来包含索引:
<input type='text' name='value[13]' data-index='13' class='kp'>
<input type='text' name='value[106]' data-index='106' class='kp'>
$( ".kp" ).keyup(function() {
$('input[name^="value"]').each(function(index, element) {
console.log($(element).data('index'));
});
});