2016-03-03 22 views
0

如果我有像下面的代码一样的表单输入字段,我可以确定哪些“索引”处于焦点?关于多维输入名称的JQuery activeElement

<input type="text" name="myField['item_name'][]"> // index 0 
<input type="text" name="myField['item_qty'][]"> // index 0 

<input type="text" name="myField['item_name'][]"> // index 1 
<input type="text" name="myField['item_qty'][]"> // index 1 

<input type="text" name="myField['item_name'][]"> // index 2 
<input type="text" name="myField['item_qty'][]"> // index 2 

如果第一项被填充并且用户选择了另一项输入,我怎样才能确定选择了哪个“索引”?

+0

你想做什么男人? –

+0

可能的重复http://stackoverflow.com/questions/967096/using-jquery-to-test-if-an-input-has-focus – Sablefoste

+0

我有一个Ajax列表,从输入中弹出下来,匹配到类型用户在输入框中输入的内容。从列表中单击选择后,ajax列表将拉入的数据加载到指定的输入值中。由于我使用多维输入名称,我需要指定填充哪些输入字段。在我的表单中,同一个“索引”上有4个其他字段需要从ajax加载的内容中填充。 – EagleTalonTim

回答

0

使用.index()搜索给定元素从匹配的元素中

试试这个:

$('[name="myField[\'item_name\'][]"]').on('focus', function() { 
 
    alert($('[name="myField[\'item_name\'][]"]').index(this)) 
 
}); 
 

 
$('[name="myField[\'item_qty\'][]"]').on('focus', function() { 
 
    alert($('[name="myField[\'item_qty\'][]"]').index(this)) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<input type="text" name="myField['item_name'][]">// index 0 
 
<input type="text" name="myField['item_qty'][]">// index 0 
 

 
<input type="text" name="myField['item_name'][]">// index 1 
 
<input type="text" name="myField['item_qty'][]">// index 1 
 

 
<input type="text" name="myField['item_name'][]">// index 2 
 
<input type="text" name="myField['item_qty'][]">// index 2

Fiddle here

要绑定的动态添加元素的事件,使用Event delegation

试试这个:

$(document).on('focus', '[name="myField[\'item_name\'][]"]', function() { 
 
    alert($('[name="myField[\'item_name\'][]"]').index(this)) 
 
}); 
 

 
$(document).on('focus', '[name="myField[\'item_qty\'][]"]', function() { 
 
    alert($('[name="myField[\'item_qty\'][]"]').index(this)) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<input type="text" name="myField['item_name'][]">// index 0 
 
<input type="text" name="myField['item_qty'][]">// index 0 
 

 
<input type="text" name="myField['item_name'][]">// index 1 
 
<input type="text" name="myField['item_qty'][]">// index 1 
 

 
<input type="text" name="myField['item_name'][]">// index 2 
 
<input type="text" name="myField['item_qty'][]">// index 2

Updated Fiddle

+0

除了动态添加内容之外,这主要工作。我最终只是在窗体的输入HTML中调用的onFocus =函数中使用相同的代码。 – EagleTalonTim

+0

检查编辑... – Rayon

0

尝试使用上FOUCS指数

$("input[type='text'][name^='myField']").focus(function(){ 
    console.log($(this).index()) 
})