试试这个:
$('#form1 input').attr('readonly', 'readonly');
#form1 input, #form1 textarea, #form1 select
attr
的工作方式与单个元素相同。#form1
仅匹配了 <form>
元素,并且 each
只触发了一次,只针对该元素。要查找所有元素(无论是否为输入元素),您可以编写 #form1 *
。使用input选择器是更好的选择。需要注意的是只有文本输入框、密码输入框和文本域才能设置为只读。对于选择框、单选框、复选框和按钮等元素无效。如果你想要仅仅显示这些元素但不允许用户进行编辑或点击,可以考虑使用disabled属性。
$("#form1 :input").attr("disabled", true);
注意:使用 disabled 属性会将输入框,下拉列表或文本域变灰,但不会在提交表单时将此元素传递给服务器。如果您需要它被提交,请告诉我,我可以帮助您。
$.each($('form').serializeArray(), function(index, value){
$('[name="' + value.name + '"]').attr('readonly', 'readonly');
});
<form>
<fieldset disabled>
<input type="text">
<input type="radio">
<input type="checkbox">
</fieldset>
</form>
可能最好的方法就是这样做
prop
,attr
。无论如何,这个答案有点过时了,但是据我所见,测试是可行的:http://jsfiddle.net/8vSKR/ - Kobi