如何使用Javascript获取表单中文本字段数组的索引
How to get index of textfield array in the form by using Javascript?
我有一个包含十几个textfield元素的表单。其值的任何更改都应执行Javascript函数。到目前为止,我知道该怎么做,但我无法检测到触发函数的文本字段的索引。我尝试了一些我在这里看到的解决方案&但没有成功。
<form action="" method="post" enctype="multipart/form-data" name="myforma1" target="_self" id="myforma1">
<input name="txtfield" type="text" id="txtfield" onchange="detect_it(this);" value="name of person" size="20" maxlength="25" />
<input name="txtfield" type="text" id="txtfield" onchange="detect_it(this);" value="name of person" size="20" maxlength="25" />
<input name="txtfield" type="text" id="txtfield" onchange="detect_it(this);" value="name of person" size="20" maxlength="25" />
<script>
function detect_it(oo)
{
alert('Index of triggered element is: ' + oo.index);
/* rest of code */
}
</script>
您可能不应该为所有输入提供相同的名称和id。
但是,您仍然可以查找父节点,然后迭代父节点的子节点,直到找到要检索其索引的节点。
试试这个getIndex()函数:
<script>
var getIndex = function (node) {
for (var i =0;i<node.parentNode.children.length;i++) {
if (node.parentNode.children[i] === node) {
return i;
}
}
}
function detect_it(oo) {
alert('Index of triggered element is: ' + getIndex(oo));
}
</script>
查看此Fiddle:http://jsfiddle.net/LkJxV/
编辑:已更正代码(再次)(thx@Felix)
这里的问题是索引不是元素的属性。根据上下文的不同,它可能有不同的索引,但您可以尝试试试类似的东西:
function detect_it(oo){
var inputs = document.getElementsByTagName('input')
for (var i = 0 ; i<inputs.length ; i++){
if(oo == inputs[i]{
alert('Index of triggered element is: ' + i);
}
}
//enter code here
}
相关文章:
- 添加和删除隐藏字段数组中的值,而不提交表单
- Javascript 将 int 值转换为八位字节流数组
- 我如何让我的 var 错误消息输出是使用字段还是字段,具体取决于留空的字段数
- 如何在字段数组中更新
- 在MongoDB中,从文档中获取单个字段数组的最简单方法是什么
- 具有相同名称和不同 id 的选择字段数组
- 流星自动体形 - 禁用对象字段数组中的选择选项
- 克隆的输入字段数组的唯一 ID 值
- 如何根据输入字段数组验证禁用提交按钮
- 如何通过输入字段数组编辑成分
- 如何具有带名称的字段数组
- 如何从json字段数组动态创建一个没有jquery的表单
- 如何获取隐藏字段数组值
- 引用到另一个类的数组字段数组字段没有't刷新
- 如何从JSON文档数组中提取字段数组
- Javascript获取包含数组键的字段数组的长度
- 根据字段数组大小对文档进行分组和删除文档
- 按匹配的对象字段数对对象数组进行排序
- AngularJS过滤记录中对应字段(数组)的值
- 如何从字段数组中获取字段名