如何动态侦听字段中的更改

时间:2016-07-25 10:12:01

标签: javascript jquery javascript-events

我的表格中有几个相似的字段:

<select class="form-control" name="Ops[1][WorkCentre]">..</select>
<select class="form-control" name="Ops[2][WorkCentre]">..</select>
...
<select class="form-control" name="Ops[n][WorkCentre]">..</select>  

我不知道会有多少这样的字段,因为用户会动态添加字段。

当任何这些输入发生变化时,我需要一些执行java脚本函数的方法,并且在该函数内部我需要能够访问已经针对'Ops'数组更改的输入键。

我很高兴使用jquery。我在想像

$('select[name=Ops[i][WorkCentre]').change(function(i){
    // A function using i
});

或者也许是一个java脚本事件监听器?

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用事件委派:

// Listen for 'change' event on every element that has class 'form-control'
$(document).on('change', 'select.form-control', function() {
   var name = $(this).attr('name');
   // You code here ...
});

<强>更新

要从name属性中提取数字,您可以按如下方式设置名称:

name="Ops_[1]_[WorkCentre]"

然后按'_'分割:

var number = $(this).attr('name').split('_')[1];

更新#2

更好的解决方案是在单独的属性中设置数字,如下所示:

<select class="form-control" name="Ops[1][WorkCentre]" data-number="1">..</select>

然后像这样检索它:

var number = $(this).attr('data-number');