2009-09-14 21 views
7

mam tenatrybutu readonly jQuery problemy

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

Mam przycisk, na którym robię to

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

Ja również próbowałem robić to

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

.. ale brak pracy ..

+1

Kod wydaje się być w porządku. Inny kod wygeneruje błąd. Spróbuj debugować używając firebug. – rahul

+0

Użyj Prop() zamiast attr(). Zobacz ten artykuł, http://stackoverflow.com/questions/5874652/prop-vs-attr. Ponadto, jeśli jesteś w IE, sprawdź tryb zgodności (Narzędzia> "Widok zgodności") upewnij się, że Widok zgodności nie jest zaznaczony. – spoony

Odpowiedz

13

Będziesz musiał to zrobić gdy DOM został załadowany przy użyciu gotowego zdarzenia jQuery dla obiektu dokumentu. Oto Working Demo

$(document).ready(function() { 

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

}); 

lub skrót

$(function() { 

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

}); 

EDIT:

Właśnie przeczytałem na one of your other questions jak $() nie działa, ale kiedy stosowane jQuery() Twój kod działa. Oznacza to, że istnieje konflikt z funkcją $, najprawdopodobniej z powodu innej struktury JavaScript używanej na stronie, która również używa stenogramu $. Możesz

1- używać jQuery's noConflict(), aby ominąć to. Możesz przypisać funkcję selektora jQuery do innego aliasu.

2- wykorzystanie jQuery() w kodzie zamiast $()

3- owinąć kod jQuery w własnym powołując anonimowej funkcji, która nadal pozwoli Ci korzystać z $() skrótem selektor jQuery wewnątrz niej

(function($) { 

    $(function() { 

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

    }); 

})(jQuery); 

jest anonimowa funkcja, która przyjmuje jeden parametr, $ i jest wykonywana natychmiast, przekazując jQuery jako argument dla tego parametru.

+3

+1 pomocna odpowiedź i nawet przykład pracy! :) –

+0

@ mathius1 Wygląda na to, że przykład padł ofiarą luki w JSBin. Zaktualizowałem go, by wskazywał prawidłowy oryginalny przykład. Dzięki za miejsce –

2

Czytaj artykuł na jetlogs

Różnica polega na tym, że robią

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

a następnie

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

powinno działać.

2

Wiem, że to jest teraz Dec 2010, ale po prostu przeczytałem ten post podczas wyszukiwania przy użyciu JQuery, aby ustawić i usunąć READONLY na polu tekstowym formularza. Znalazłem i używam tego:

`$ ('# id-name'). Attr ('readonly', true); // powoduje, że jest on tylko do odczytu:

$ ('# id-name').attr ("readonly", false); // czyni editable`

+0

Dzięki ... to zadziałało dla mnie. Nie wiem dlaczego, ale po prostu użycie attr ("readonly") nie dałoby rady. –

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> 

Jestem pewien, że to będzie działać 100%