【发布时间】:2019-08-20 23:03:15
【问题描述】:
提交表单时,有没有办法为选定的单选按钮获取自定义 HTML5 data-* 属性? serializeArray() 似乎没有获取该值。
HTML
<form id="preference-form">
<table>
<tr class ="result">
<td width="100%">{{Title}}</td>
<td><input type="radio" id="radio-{{Project_No}}-1" data-application="{{Application_ID}}" name="{{Project_ID}}" value="1"></td>
<td><input type="radio" id="radio-{{Project_No}}-2" data-application="{{Application_ID}}" name="{{Project_ID}}" value="2"></td>
<td><input type="radio" id="radio-{{Project_No}}-3" data-application="{{Application_ID}}" name="{{Project_ID}}" value="3"></td>
<td><input type="radio" id="radio-{{Project_No}}-9" data-application="{{Application_ID}}" name="{{Project_ID}}" value="9"></td>
</tr>
</table>
</form>
JavaScript
$("#preference-form).on('submit', function() {
var data = $(this).serializeArray();
console.log(data)
});
这会输出name 和value 字段,但我似乎找不到关于data-* 字段的简单答案。不幸的是,我需要所有三条信息才能对数据库记录执行更新,据我了解:
- 每个 ID 和 Value 字段都必须是唯一的,
- 每个名称字段必须相同才能对元素进行分组。
我认为这其中的棘手部分是多个元素与单个元素相比。
【问题讨论】:
-
你不能只使用隐藏输入吗?
-
请注意,将
<tr>包装在<form>中是无效标记 -
也许如果我知道如何将它与输入相关联。我的 HTML 的
<tr>元素实际上是 3 或 4 深;我将如何关联?更新了标记。 -
除了收音机之外,您还有其他表单控件吗?简单地为收音机编写自己的序列化程序并提出像
[{app:123, name:'foo', value:3}]这样的对象 -
然后我会建议另一个数据属性来识别更新与插入也
标签: javascript forms serializearray html5-data