简单的来说,两者的共同点是都能够使用户不能改变表单中的内容,但是两者有微小的差别,来用于不同的场景
-
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是不会进行序列化和表单传值