我有这种 JS,女巫收集数据并插入它发生变化。
var dataArray = [];
$(function(){
$(document).on('change', 'input', function(){
var hid0 = $(this).data("hidden_val0");
var hid1 = $(this).data("hidden_val1");
var hid2 = $(this).data("hidden_val2");
dataArray.push([hid0, hid1, hid2])
});
});
$('.something_here').bind('click', function (event) {
event.preventDefault();
$.post('/do/it',
{
send_array: dataArray,
},
function (response) {
location.reload();
}
);
我认为问题是它没有看到目标?可能我不应该使用 $(this)
因为他根本没有获得正确的值。
这是我正在使用的 HTML:
<input autocomplete="off" id="add_109_01000340001001001_cad" name="add_109_01000340001001001[cad]" hidden_val0="hidden_val0" type="hidden" value="01000340001001001">
<input autocomplete="off" hidden_val1="hidden_val1" id="add_109_01000340001001001_id" name="add_109_01000340001001001[id]" type="hidden" value="112000666">
<input autocomplete="off" autocomplete_key="add_109" hidden_val2="hidden_val2" id="add_109_01000340001001001" name="add_109_01000340001001001" onkeyup="fillFlatNumber(this)" size="3" style="height: 10px" type="text" value="1" class="ac_input">
现在我得到了这个,而不是里面的值:
[undefined, undefined, undefined]
如果有人愿意帮助我就好了。我会很感激。
最佳答案
不要使用不同的数据属性,而是使用一个(例如 data-hidden
),并确保向它们添加 data-
前缀。完成此操作后,您可以使用以下方法循环遍历具有此数据隐藏属性的所有元素:
$("[data-hidden]").each(function() { // loop all tags with `data-hidden`
hidden_values.push($(this).data("hidden"));
});
这里$("[data-hidden]")
选择所有具有data-hidden
属性的元素,并且.each()
允许我们循环遍历这些元素,其中 $(this)
指的是我们迭代的当前元素。
参见下面的示例:
var dataArray = [];
$(function() {
$('input').change(function() {
var hidden_values = [];
$("[data-hidden]").each(function() { // loop through all hidden values
hidden_values.push($(this).data("hidden"));
});
dataArray.push(hidden_values);
console.log(dataArray);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<input autocomplete="off" id="add_109_01000340001001001_cad" name="add_109_01000340001001001[cad]" data-hidden="hidden_val0" type="hidden" value="01000340001001001">
<input autocomplete="off" data-hidden="hidden_val1" id="add_109_01000340001001001_id" name="add_109_01000340001001001[id]" type="hidden" value="112000666">
<input autocomplete="off" autocomplete_key="add_109" data-hidden="hidden_val2" id="add_109_01000340001001001" name="add_109_01000340001001001" size="3" style="height: 10px" type="text" value="1" class="ac_input">
关于javascript - 提交时不通过自定义标签收集数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59156798/