2010-11-11 15 views
5

Jak można wyłączyć pole tekstowe HTML bez konieczności zmiany wyglądu pola tekstowego przeglądarki?Wyłączyć pole tekstowe bez zmiany stylu?

Mamy wyłączyć z JQuery: $(".datepick").attr('readonly', 'readonly');

działa dobrze, ale w Firefox pojawi się pole tekstowe z szarym tłem i grubą ramką. Chcemy temu zapobiec.

Powodem, dla którego to robimy, jest zaznaczenie pola tekstowego wyboru daty w języku JQuery (aby użytkownik musiał korzystać z obszaru podręcznego kalendarza).

+0

Kiedy używam tylko readonly w Firefoksie (3.6.12), to nie daje mi szarego tła ani innej granicy. –

+0

Hmm .. Jesteśmy na 3.6.10 –

+0

Nie dostaję też różnych stylów.Nie mogę rozwiązać części DatePicker, ale tutaj jest trochę CSS, aby nadpisać styl "disabled": input [disabled] { background-color: #FFF; border-color: # 404040; szerokość obramowania: 2px 1px 1px 2px; } (w oparciu o domyślne style Firefox) – attack

Odpowiedz

5

Można to zrobić poprzez rozmycie wprowadzania tekstu na focus:

$('.datepick').focus(function(){ 
    this.blur(); 
}); 

Alternatywnie, można po prostu wyłączyć w polu tekstowym na wejściu:

$('.datepick').keydown(function(e){ 
    e.preventDefault(); 
}); 
+0

Próbowałem 'e.preventDefault();' .. działało, ale zauważyłem, że w Chrome klucz do usunięcia nadal działał. Nie mogłem wprowadzić tekstu, ale mogłem go usunąć po wybraniu daty za pomocą kontrolki - nie tego, co chciałbym .. –

+0

@Marcus Zmieniłem moje pytanie sugerując użycie 'keydown' zamiast' keypress'. Wolę jednak pierwszą technikę. – lonesomeday

+0

Pierwsze rozwiązanie (rozmycie) nie działa w przeglądarce Chrome. Drugie rozwiązanie wygląda dobrze! –

-1

hows o attr('disabled', true). aby ponownie włączyć, removeAttr('disabled')

http://jsfiddle.net/E9m3K/3/

^stylizowany wyłączona, ponieważ poproszony o wyłączyć

http://jsfiddle.net/E9m3K/4/

^stylizowany tylko do odczytu, więc prawdopodobnie po prostu chcesz nadpisać/jednoznacznie określić border i background w css.

+1

To nadal powoduje, że tło jest szare. ORAZ zatrzymuje działanie terminala danych JQuery. –

+0

Po prostu umieść styl w tle? To samo dotyczy granicy ... –

+0

Jakie style zmieniają się po ustawieniu opcji readonly/disabled = true? –

0

Atrybut disabled elementu input zapobiega ogniskowaniu i wprowadzaniu bez zmiany wyglądu.

+0

Nie działa dla mnie. Zobacz moje komentarze na odpowiedź @ medera. –

+4

Wyłączony atrybut zapobiega także publikowaniu wartości w polu. – Vic

3

Jeśli chcesz nadpisać stylizacji dla wyłączone pole wprowadzania, jawnie ustaw styl dla wejściowego pola tekstowego, tak:

input[type=text] { 
    color: #000; 
    background-color: #fff; 
} 
/* alternatively you could add textarea to this as well */ 

dodatkowo można ustawić klasę css jak „wyłączone”, gdy ustawisz wejście osobom niepełnosprawnym i używać niepełnosprawnej styl css tak:

input[type=text].disabled { 
    /* disabled styling goes here */ 
} 

a następnie niektóre kodu tak:

$(some_input).attr('disabled', 'disabled'); 
$(some_input).addClass('disabled'); 

i ponownie włączyć pole możesz spróbować coś takiego:

$(some_input).removeAttr('disabled'); 
$(some_input).removeClass('disabled'); 
0

Spróbuj:

$(".ui-state-disabled").removeClass("ui-state-disabled"); 

Pracowałem z elementami, które można przeciągać i upuszczać, i chciałem wyłączyć tę funkcję bez zmiany ich wyglądu.