2010-05-20 14 views

Odpowiedz

108

Jeśli znasz to, kiedy strona jest renderowana, co brzmi tak, jak robisz, ponieważ baza danych ma wartość, lepiej ją wyłączyć po renderowaniu zamiast JavaScript. Aby to zrobić, wystarczy dodać atrybut readonly (lub disabled, jeśli chcesz, aby usunąć je z przesyłania formularzy, jak również) do <input>, tak:

<input type="text" disabled="disabled" /> 
//or... 
<input type="text" readonly="readonly" /> 
+14

+1 tylko do odczytu! Nie wszystkie o tym wspominają. –

+63

Nie wiem, dlaczego to dostaje głosów, to nie odpowiada na pytanie. Spodziewaliśmy się odpowiedzi javascript. – Sophie

+1

@Sophie to najodpowiedniejszy sposób, aby osoba pytająca zrobiła to w oparciu o ich sytuację, być może zmiana tytułu jest w porządku. –

6

Pobierz odwołanie do Twojej skrzynki wejściowej jednak chcesz (np document.getElementById('mytextbox')) i ustawić jej readonly nieruchomość do true:

myInputBox.readonly = true; 

Alternatywnie można po prostu dodać tę właściwość inline (nie wymaga JavaScript):

<input type="text" value="from db" readonly="readonly" /> 
+0

Jeśli piszesz HTML (w przeciwieństwie do XHTML), które byłoby

14

Jeśli dane są wypełniane z bazy danych, to może rozważyć nie przy użyciu znacznika <input>, aby go wyświetlić. Niemniej jednak, można go wyłączyć bezpośrednio w tagu:

<input type='text' value='${magic.database.value}' disabled> 

Jeśli trzeba wyłączyć go z JavaScript później, można ustawić „wyłączone” atrybut:

document.getElementById('theInput').disabled = true; 

Powodem nie sugerujemy pokazujący wartość jako <input> polega na tym, że z mojego doświadczenia wynikają problemy z układem. Jeśli tekst jest długi, to użytkownik musi spróbować przewinąć tekst, co nie jest czymś, co zwykli ludzie mogliby odgadnąć. Jeśli po prostu wrzucisz go do modelu <span>, uzyskasz większą elastyczność w stylizacji.

+2

Pamiętaj, że wyłączone może sprawić, że tekst będzie prawie nieczytelny w niektórych przeglądarkach. Lepiej być z atrybutem readonly, np.

+0

Tak, to dobra uwaga! – Pointy

+0

wielkie dzięki za twoją konstruktywną pomoc; to zaoszczędzić mój czas. – kawtousse

162
document.getElementById('foo').disabled = true; 

EDIT

lub

document.getElementById('foo').readOnly = true; 

Zauważ, że readOnly powinny być w CamelCase pracować poprawnie w Firefoksie (magii).

+3

To zadziałało dla mnie. Wersja Jquery to $ ("input"). Prop ("wyłączone", prawda) –

+8

To powinna być zaakceptowana odpowiedź. – WebWanderer

+0

Jestem spóźniony o siedem lat - ale czy jest jakaś semantyczna różnica między tymi dwoma w 2017 roku? – Jules

4

Można również przez jquery:

$('#foo').disabled = true; 
+1

Lepszą opcją jest prawdopodobnie [to] (http://stackoverflow.com/a/1414366/1412022) – Nothing4You

+0

@ Nic 4Cie się zgadzam –

+0

@Chani Poz Wywołujecie niderlandzkiego setera na obiekcie JQuery wyniknie z błędem. $ ('# foo') [0] .disabled = true lub $ ('# foo'). get (0) .disabled = true wykona pracę –

Powiązane problemy