所以我有一个有趣的问题。尽管我已经找到了解决方案,但我想知道您对此有何看法。
详细信息:我有一个用于扫描一些 ID 的 javascript 前端脚本。为了使它对用户更加友好,该脚本会保存所有扫描的 ID 并将其存储在一个数组中。用户扫描 ID 后,它将显示在一个 div 中,并放入一个隐藏的输入以进行进一步的提交操作。这看起来像这样:
<div id="scan_output">
<div class="alert alert-success" style="">
<button class="close single-scan-output-close" data-dismiss="alert">×</button>
<div>ID #66666</div>
<input type="hidden" value="herp;66666;derp" name="data[Stock][0]">
</div>
<div class="alert alert-success" style="">
<button class="close single-scan-output-close" data-dismiss="alert">×</button>
<div>ID #987654</div>
<input type="hidden" value="blub;987654;foo" name="data[Stock][1]">
</div>
<div class="alert alert-success" style="">
<button class="close single-scan-output-close" data-dismiss="alert">×</button>
<div>ID #123456</div>
<input type="hidden" value="foo;123456;bar" name="data[Stock][2]">
</div>
</div>
如您所见,输入中有一些不同的值,因为必须将这种包含更多信息的格式上传到后端。我只是添加了一些虚拟数据。
name 属性将索引存储在第二维中,在后端也很方便,因为您获得了一个数组。该索引也是 javascript 数组的索引,其中存储了 ID 以进行唯一检查,因此用户在扫描 ID 两次时会收到通知。
因此,如果用户不小心扫描了错误的内容,他可以通过单击“x”按钮将其删除。
我的第一次尝试看起来如下。触发“关闭”事件后,我捕获了关闭的当前元素:
var $inputElement = $this.parent().find('input[type=hidden]');
var sNameAttribute= $inputElement.attr('name');
name 属性现在作为一个简单的字符串存储在“sNameAttribute”中,如下所示:“data[Stock][1]”或“data[Stock][2]”当然取决于他点击的元素。
我不知道如何从这个字符串值中获取索引。我不想使用“拆分”或正则表达式过滤器之类的变通方法。
为了完成任务,我只是在输入中添加了一些数据属性,其中索引存储为普通变量,就像:
<input type="hidden" value="blub;987654;foo" name="data[Stock][1]">
我的问题是,你将如何解决这个问题,或者如何从存储在 name 属性中的字符串值“data[Stock][1]”中获取索引。我尝试了一些 eval() 函数,但没有得到有用的结果。