2012-08-15 20 views
8

Czy istnieje atrybut lub technika dla pól wyboru HTML odpowiadających readOnly="true" dla wejść HTML?Odpowiedni tylko dla elementów HTML Select

Mam pole wyboru formularza Chciałbym wyłączyć, ale nadal przekazuje, gdy formularz jest wysłany. Gdyby to było wejście HTML, chciałbym zrobić coś takiego

$('select_id').setAttribute('readOnly', 'true'); 

a przeglądarka uczyniłoby boiska w un-editable, ale jego wartość nadal będzie przekazywany do zaplecza. Chciałbym czegoś podobnego do zaznaczenia HTML, ale wykonanie poniższych czynności nie działa. Atrybut został pomyślnie dodany do DOM, ale przeglądarka nadal renderuje go jako możliwy do wybrania.

Zdaję sobie sprawę, mogłem wykonać następujące czynności

$('#input_id').disabled(); 

ale kiedy pole jest niepełnosprawnych jego wartość nie zostanie przerzucony na backend.

Chciałbym sposób, aby wyłączyć to pole wyboru, ale nadal przekazać do zaplecza.

(przykłady użyć Prototype JS, ale jestem zainteresowany w każdym ogólne rozwiązanie)

Odpowiedz

22

Wyłącz wszystkie, ale wybrana opcja:

<select> 
<option disabled="disabled">1</option> 
<option selected="selected">2</option> 
<option disabled="disabled">3</option> 
</select> 

ten sposób rozwijana nadal działa (i przesyła jego wartość), ale użytkownik nie może wybrać innej wartości.

+2

Nie wiem, kto w dół głosował i dlaczego, to wydaje się działać (przynajmniej w Chrome, testowanie teraz innych przeglądarek) –

+3

@AlanStorm, to piekielny test :)) –

+2

Problem z tym rozwiązaniem polega na tym, że użytkownik nadal może odznaczyć opcje za pomocą CTRL + kliknięcie –

3

dodać klasę niepełnosprawnych:

.disabled{ 
    color: grey; 
} 

jeśli klasa obecne wykorzystanie zapobiec domyślnie na ostrości i na kliknięcie, a dbl kliknij:

$('#el').bind('click dblclick focus').function(event){ 
    if ($(this).hasClass('disabled')) event.preventDefault(); 
}); 
+4

Warto zwrócić uwagę na przyszłych użytkowników Google'a , ten przykład wydaje się być użyty g jQuery. –

Powiązane problemy