如何添加“只读”属性到<input>?

如何将readonly添加到特定的<input>.attr('readonly')不起作用。

jQuery <1.9

 $('#inputId').attr('readonly', true); 

jQuery 1.9+

 $('#inputId').prop('readonly', true); 

阅读有关prop和attr之间区别的更多信息

使用$ .prop()

 $("#descrip").prop("readonly",true); $("#descrip").prop("readonly",false); 

只读是HTML中定义的一个属性,所以要像一个对待它。

如果您希望它不可编辑,您需要在正在使用的对象中具有像readonly =“readonly”之类的内容。 如果你想再次编辑,你将不会有像readonly =''(如果我理解正确,这不是标准的)。 你真的需要删除属性作为一个整体。

因此,使用jQuery添加和删除它是有道理的。

设置一些只读:

 $("#someId").attr('readonly', 'readonly'); 

删除只读:

 $("#someId").removeAttr('readonly'); 

这是真正为我工作的唯一select。 希望能帮助到你!

.attr('readonly', 'readonly')应该做的。 你的.attr('readonly')只返回值,不设置。

我认为“禁用”不包括在POST上发送的input

您可以通过使用.removeAttr禁用只读:

 $('#descrip').removeAttr('readonly'); 

为了只读:

 $("#descrip").attr("readonly","true"); 

禁用只读

 $("#descrip").attr("readonly",""); 

使用setAttribute属性。 在示例中注意,如果select1将只读属性应用于文本框,否则请只删除该属性。

http://jsfiddle.net/baqxz7ym/2/

 document.getElementById("box1").onchange = function(){ if(document.getElementById("box1").value == 1) { document.getElementById("codigo").setAttribute("readonly", true); } else { document.getElementById("codigo").removeAttribute("readonly"); } }; <input type="text" name="codigo" id="codigo"/> <select id="box1"> <option value="0" >0</option> <option value="1" >1</option> <option value="2" >2</option> </select> 

对于jQuery版本<1.9:

 $('#inputId').attr('disabled', true); 

对于jQuery版本> = 1.9:

 $('#inputId').prop('disabled', true);