jQuery表单序列化问题
使用背景:
关于表单提交,一直有在使用的jQuery的serialize()方法和serializeArray()方法(下面所说的序列化全部是指jq序列化方法),然后在使用n多次之后才发现从来没有区分过:序列化是否提交“input[readonly]”,“input[disabled]”,input[type='hidden']元素?就是这种简单动手就能解决的疑问导致了在使用这些方法的时候出现了很多问题,所有不再多说上动手栗子。
测试实例:
<div class="view-box">
<form>
<input type="text" name="a">
<input type="text" name="b" readonly="" value="readonly">
<input type="text" name="c" disabled="" value="disabled">
<input type="hidden" name="e" value="hidden">
<input id="submit" type="button" value="提交">
</form>
</div>
<script type="text/javascript">
$(function(){
$("#submit").click(function(){
console.log($("form").serialize());
})
})
</script>
结果:
结论:
1.序列化提交表单,不提交“input[disabled]”元素(禁用的元素不会被提交)。
2.隐藏和readonly属性的input都会被提交。
w3school说:serializeArray() 方法使用了W3C 关于 successful controls(有效控件) 的标准,有兴趣的可以去查阅一下。