2 回答
TA贡献1834条经验 获得超8个赞
与其使用不同的数据属性,不如使用一个(例如data-hidden),并确保data-为它们添加前缀 of。完成此操作后,您可以使用以下命令遍历所有具有此数据隐藏属性的元素:
$("[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">
TA贡献1821条经验 获得超5个赞
您的代码存在多个问题,我将尝试一一列出
数据属性应以数据为前缀。所以像
$(this).data("hidden_val")你的html一样访问应该是data-hidden_val="hidden_val"您正在向所有输入字段添加输入更改事件,因此当您编辑第一个输入时,您无法查询第二个和第三个输入的值,因为它们将为空。如果您尝试获取所有三个元素的值,您的数组将只有一个正确值和两个空值。
由于您将数据附加到数组中,因此任何输入的每次更改都会添加一组新的重复值。
您为每个输入使用不一致的数据属性,例如
hidden_val0等hidden_val1。而只是使用data-hidden_val
因此,不要在输入更改时读取数据,而是在将其发送到服务器之前读取它
添加回答
举报
