如何使用Javascript查找一系列隐藏输入字段的索引

How to use Javascript to find the index of a series of of hidden input fields

本文关键字:输入 字段 索引 隐藏 一系列 何使用 Javascript 查找      更新时间:2023-09-26

这篇文章走在正确的轨道上,但我需要更进一步;我的输入名称可能分配了非连续索引值。

背景:我没有一长串复选框,而是有一个例程,通过选择保管箱中的值来构建列表。这有助于减少屏幕上的空间。因此,当用户从下拉列表中选择值时,脚本会尝试确保所选内容不存在,如果存在,请不要再次添加它。

生成的列表如下所示:

<div id="Access:search_div">
<ul class="options">
<li onclick="removeRoleOptions(this,'Access:search_div');"><input type="hidden" name="Access:search[7]" value="1" />Standard</li>
<li onclick="removeRoleOptions(this,'Access:search_div');"><input type="hidden" name="Access:search[8]" value="1" />Premium</li>
<li onclick="removeRoleOptions(this,'Access:search_div');"><input type="hidden" name="Access:search[10]" value="1" />Lifetime</li>
<li onclick="removeRoleOptions(this,'Access:search_div');"><input type="hidden" name="Access:search[14]" value="1" />SysOp</li>
</ul>
</div>

我看到很多如何找到值的例子,但它只是一个布尔值,所以如果它在列表中,它将永远是 1。我需要的是搜索名称并查看附加了什么索引值。因此,对于上面的代码,我想将从下拉列表中选择的项目的值与 7、8、10 和 14 进行比较。

这是我到目前为止拥有的代码的重要部分:

function addRoleOptions(select, variable, output) {
var display=document.getElementById(output);
var option = select.options[select.selectedIndex];
var ul = display.getElementsByTagName('ul')[0];
if (!ul) {
    ul = document.createElement("ul");
    ul.setAttribute('class', 'options');
    display.innerHTML = '';
    display.appendChild(ul);
}
var choices = ul.getElementsByTagName('input');
for (var i = 0; i < choices.length; i++) {
    if (choices[i].value == option.value) {
        return;
    }
}

option.value 保存我正在比较的数字。

所以我的问题是,如何解析名称 [] 中的值以与发送的值进行比较?

我不太确定要求,但是您可以尝试使用正则表达式从名称中提取索引。

(choices[i].name).match(/[0-9]+/g)将为您提供[]之间的值

然后,您可以将该值用于需要执行的操作

        var s = "Access:search[6543]";
        var num = s.match(/'d+/)