javascript - 提交时不通过自定义标签收集数据

标签 javascript jquery html arrays

我有这种 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/

相关文章:

javascript - 需要帮助将纹理背景设置为容器 div

jquery - 通过 chrome inspector css 查找图像的根路径

javascript - 如何使用 Bootstrap 修复 div 对齐

javascript - 显示隐藏密码

javascript - 从状态中的对象 react 映射项

javascript - 工具提示功能和 CSS

javascript - 如何对<select>中动态生成的<option>进行排序

javascript - 在表单提交上执行 jQuery/ajax POST

javascript - XMLHttp请求 : Cross origin requests are only supported

jquery - 如何使 javascript 响应稍后以 AJAX 方式添加的按钮