jQuery PHP Handle输入数组

时间:2016-05-25 12:37:58

标签: javascript php jquery

我有这样的结构:

<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();函数我在文本框中获取字符串)

有办法吗? 谢谢!

2 个答案:

答案 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
  1. $(this).attr('name')将获取当前输入的name属性值
  2. \[(.*?)]将匹配方括号内的任何内容,并将字符串添加到第一个捕获的组
  3. 中 匹配数组上的
  4. [1]将字符串放在方括号内。
  5. $(".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'));

  });
});