2009-09-14 71 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%