2009-09-14 72 views
7

我有这个的jQuery只读属性问题

<input type="text" id="tbox" name="tbox" readonly="readonly" /> 

我有一个按钮上,我这样做

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

我也试着这样做

$('#tbox').attr('readonly', false); 

..但没有工作..

+1

你的代码似乎是好的。其他一些代码将会产生错误。尝试使用萤火虫进行调试。 – rahul 2009-09-14 09:08:26

+0

使用Prop()而不是attr()。看到这篇文章,http://stackoverflow.com/questions/5874652/prop-vs-attr。另外,如果您在IE中,请检查兼容性模式(工具>“兼容性视图”),确保兼容性视图未被选中。 – spoony 2013-06-06 18:41:54

回答

13

您将需要这样做当DOM使用jQuery的ready事件加载文档对象时。这里有一个Working Demo

$(document).ready(function() { 

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

}); 

或简写

$(function() { 

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

}); 

编辑:

我刚阅读one of your other questions$()如何没有工作,但是当你使用jQuery(),你的代码工作。这表明与$函数有冲突,这很可能是由于页面上使用了另一个JavaScript框架,也使用了简写形式$。你可以

1-使用jQuery的noConflict()来解决这个问题。您可以将jQuery选择器函数分配给不同的别名。

2-使用jQuery()在你的代码代替$()

3-包裹jQuery代码在一个自调用匿名函数,这将仍然允许您使用$()速记jQuery选择它

(function($) { 

    $(function() { 

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

    }); 

})(jQuery); 

这是匿名的函数,它的一个参数,$并立即执行,在jQuery传递作为该参数的参数。

+3

+1有帮助的答案,甚至是一个可行的例子! :) – 2009-09-14 09:15:32

+0

@ mathius1看起来这个例子是JSBin中的一个漏洞的受害者。我已经更新它指向正确的原始示例。感谢您的光临 – 2014-03-06 18:08:00

2

jetlogs

这里的区别读文章则认为,他们这样做

<input type="text" id="tbox" name="tbox" readonly /> 

然后

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

应该工作。

2

我知道这是现在2010年12月,但我只是在使用JQuery在表单的文本框上设置和删除READONLY时寻找此文。我发现并使用了这个:

`$('#id-name')。attr('readonly',true); //使其只读

$('#id-name')。attr('readonly',false); //使得editable`

+0

谢谢..这对我有效。我不知道为什么,但简单地使用attr(“只读”)不会做到这一点。 – 2011-07-26 14:31:17

0
<input type="submit" id="btn1" onclick="setTimeout(disablefunction, 1);"> 

    add function of java script 
     <script type="text/javascript" > 


     function disablefunction() 
     { 
      $('#btn1').attr('disabled',true) 
     } 


     </script> 

我相信这会工作100%