简单的来说,两者的共同点是都能够使用户不能改变表单中的内容,但是两者有微小的差别,来用于不同的场景
-
readonly
只对input
和textarea
有效, 但是disabled
对于所以的表单元素都是有效的,包括radio
,checkbox
等 - 如果表单中使用的
disabled
那么用户是不能选择的,也就是说这个文本框是无法获取到焦点的,而readonly
是可以获取到焦点,只是不能修改,为只读 - 最重要的一点,在发送表单的时候,如果某个表单字段是
disabeld
,则该字段不会发送,也不会形成键值对,用jQuery
的serializerayyay
也是一样的,可以来试一下
<input type="text" name='name' id='name' value='bob' readonly>
然后我们用jQuery的serializeArray()
来获取表单中的序列化结果:
var formData = $('form[name="myform"]').serializeArray();
console.log(formData);
这个时候的值为
[[object Object] {
name: "name",
value: "bob"
}]
现在把表单元素改为disabled
:
<input type="text" name='name' id='name' value='bob' disabled>
然后再序列化的话,得到的结果为:
[]
由此可见,disabled
是不会进行序列化和表单传值