如何检测当前输入文本'使用jquery从输入文本数组中获取s索引
How to detect current input-text's index from an array of input-text with jquery
我有一组输入文本框,简化如下:
<input type="text" name="quantity[3]" value="0">
<input type="text" name="quantity[6]" value="0">
<input type="text" name="quantity[7]" value="0">
<input type="text" name="quantity[11]" value="0">
这两种方式中的任何一种对我来说都是可以接受的,但我甚至不知道如何做到其中一种:
当第三个输入框(索引为7)更改时,两个alert()
中的任何一个对我来说都是可接受的:
- 7(因为第三个文本框的实际索引是
7
) - 2(因为它可能从0开始计数,因此它的索引将为2)
我的代码不起作用是:
$(document).ready(function(){
$('input[name^=quantity]').change(function(){
alert($(this).index());
});
})
链接:http://niamco.com/cp/problem.html
预计当用户更改数量文本框中的任何一个时,都会提醒文本框的val()
及其正确的index()
。我们看到val()
被正确输出,但index()
总是返回0
。
由于val()
是正确的,我们应该确保jQuery加载良好并且可以工作。那么为什么index()
不应该是真的呢?
奇怪的是,正如我所研究的,val()
和index()
都是jQuery功能。如果val()
是javascript基础,那么它是可以接受的。但是现在,一个jqueryBase函数可以工作,而另一个则不行!
.index()
获取元素相对于其同级元素的当前位置。您应该使用正则表达式来获取输入名称中[
和]
之间的数字。
使用这个替代:
$('input[name^=quantity]').change(function () {
var index = $(this).prop('name').match(/'[(.*?)']/)[1];
console.log(index);
});
它在这里工作:http://jsfiddle.net/u8HRq/1/
更新:根据您的更新,这里有一个工作小提琴:http://jsfiddle.net/qbmAU/2/
第一个id
应该是唯一的,所以我已经将它们更改为类,并更新了change
事件的选择器。
我也有.index()
工作:
$(this).index('.quantity')
index()
通常通过返回相对于匹配兄弟姐妹的位置来工作,这就是为什么我和j08691的答案有效的原因。但是,如果元素不是兄弟元素,则可以将选择器作为参数传递。这返回当前元素相对于匹配元素的CCD_ 20。
这将同时获得:
$('input[name^=quantity]').change(function () {
console.log($(this).index(), +$(this).prop('name').match(/'d+/g));
});
jsFiddle示例
$(this).index()
是真正的索引
+$(this).prop('name').match(/'d+/g)
是来自属性的索引
更新:在你更新了你的问题以显示你真正使用的代码后,这应该会对你有所帮助:
$('input[name^=quantity]').change(function () {
console.log($(this).closest('table').find('input[name^=quantity]').index($(this)), +$(this).prop('name').match(/'d+/g));
});
+$(this).prop('name').match(/'d+/g)
仍然可以从属性中获取索引
$(this).closest('table').find('input[name^=quantity]').index($(this))
,但您需要使用.index()
来获得输入元素的索引,因为它们不是彼此的兄弟。您需要为要与之进行比较的元素集合传递一个参数,在本例中为$(this).closest('table').find('input[name^=quantity]')
。
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- 使用模拟按键在输入框中自动输入文本
- 如何添加类,同时开始在文本字段中输入文本
- JQuery使用相同的功能自动完成各种输入文本
- 如何设置输入文本框jquery的值
- 输入文本框为空时的阻止按钮asp.网络表单
- 基于单选框更新页眉,选中并选择输入文本
- 将输入文本与某个选项的值相匹配并自动选择
- 如何在 JavaScript 中创建输入文本框
- 如何使用纯Javascript观看输入文本框
- 需要使用javascript获取输入文本,然后将其添加到句子中
- php&js-将电子邮件添加到输入文本中
- 动态启用/禁用来自控制器的输入文本
- .val()不返回输入文本
- 从确认框中预填充输入文本框
- 如何使用JavaScript解析输入文本中给定的数据
- 添加/删除/更改输入文本的部分值
- 根据输入文本按元素排序,AngularJS
- 如何将(a*b)两个输入文本值相乘,并在javascript中随文本变化动态显示
- 如何从Tr重复的输入文本中获取值