Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zmiana koloru tła dynamicznego pola formularza, disabled="disabled"
detter
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 6.03.2004
Skąd: Wawa

Ostrzeżenie: (0%)
-----


Witam.
Na wstępie zaznaczę, iż w kwestii Javy jestem totalnie zielony, a odpowiedzi na nurtujące mnie pytanie szukałem dłuuugo...
i niestety nie znalazłem... sad.gif

Mam formularz w html, w pewnym momencie, dochodzi opcja wyboru, czy użytkownik chce otrzymać fakturę VAT.
użyłem takiej opcji:
  1. <input type="checkbox" name="nazwa" value="wartość" onclick="
  2. this.form.elements['vat_firma'].disabled =
  3. this.form.elements['vat_miejscowosc'].disabled =
  4. this.form.elements['vat_ulica'].disabled =
  5. this.form.elements['vat_nip'].disabled = !this.checked" />


Do pól formularza (vat_firma, vat_miejscowosc, vat_ulica i vat_nip) dodałem opcję:
  1. disabled="disabled"


Wszystko działa fajnie i przyjemnie...
Problem polega na tym, iż wygląd formularza mam oparty o css...

I teraz tak:
jak mam zaznaczone pole typu checkbox - normalnie mogę wypełnić interesujące mnie pola,
jeśli pole checbox nie jest zaznaczone: pola są zablokowane i nie można wprowadzać w nich tekstu.
Chciałbym, aby gdy pole checkbox nie jest zaznaczone - to żeby pola mu podlegające zmieniły kolor tła...
Aby je wyróżnić - jako nie aktywne....

Tu mały obrazek, przedstawiający o co mi dokładniej chodzi:



Ma ktoś może jakiś pomysł, jak to rozwiązać?

Dodam tylko, ze cała reszta formularza wygląda tak jak w pierwszej części screena - i chciałbym aby tak pozostało...



--------------------
Detter
Go to the top of the page
+Quote Post
icetique
post
Post #2





Grupa: Zarejestrowani
Postów: 72
Pomógł: 13
Dołączył: 12.04.2009

Ostrzeżenie: (0%)
-----


Dodawaj klasę do tych inputów po kliknięciu na checkbox:
Kod
this.form.elements['vat_firma'].className = 'disabled';
this.form.elements['vat_firma'].className = 'twojaKlasa disabled'; // lub tak


Ta druga opcja wtedy, gdy masz już jakąś klasę przypisaną do vat_firma.
Jak chcesz zrobić z powrotem enabled, to:

Kod
this.form.elements['vat_firma'].className = '';
  this.form.elements['vat_firma'].className = 'twojaKlasa'; // lub tak


Najlepiej jakąś funkcję zrób, bo inline będzie trochę nieczytelny.

Ten post edytował icetique 31.01.2010, 09:54:33
Go to the top of the page
+Quote Post
blooregard
post
Post #3


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat
iż w kwestii Javy jestem totalnie zielony

JavaScript to nie Java.


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
detter
post
Post #4





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 6.03.2004
Skąd: Wawa

Ostrzeżenie: (0%)
-----


ok, poprawiam mój błąd: jestem ziolony w JavaScript smile.gif

Trochę zaczyna mi świtać, ale nie do końca wiem w jaki sposób zastosować te wskazówki....
Może moglibyście podać konkretny przykład jak to ma wyglądać? (cały input....).

PS. przepraszam za marudzenie, ale naprawdę tego nie ogarniam....


--------------------
Detter
Go to the top of the page
+Quote Post
icetique
post
Post #5





Grupa: Zarejestrowani
Postów: 72
Pomógł: 13
Dołączył: 12.04.2009

Ostrzeżenie: (0%)
-----


Kod
function disable()
  {
  this.form.elements['vat_firma'].disabled = this.form.elements['vat_miejscowosc'].disabled = this.form.elements['vat_ulica'].disabled = this.form.elements['vat_nip'].disabled = true;
  this.form.elements['vat_firma'].className = this.form.elements['vat_miejscowosc'].className = this.form.elements['vat_ulica'].className = this.form.elements['vat_nip'].className = 'disabled';
  }
  
  function enable()
   {
   this.form.elements['vat_firma'].disabled = this.form.elements['vat_miejscowosc'].disabled = this.form.elements['vat_ulica'].disabled = this.form.elements['vat_nip'].disabled = false;
   this.form.elements['vat_firma'].className = this.form.elements['vat_miejscowosc'].className = this.form.elements['vat_ulica'].className = this.form.elements['vat_nip'].className = '';
   }


Kod
input.disabled
  {
  background-color: #aaaaaa;
  }


Kod
<input type="checkbox" name="nazwa" value="wartość" onclick="this.checked ? enable() : disable();" />


Pisane z palca (może nie działać, chodziło mi o przedstawienie idei).

Ten post edytował icetique 31.01.2010, 16:46:39
Go to the top of the page
+Quote Post
detter
post
Post #6





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 6.03.2004
Skąd: Wawa

Ostrzeżenie: (0%)
-----


Wow... taką formę wyjaśnienia nawet ja potrafiłem wrzucić do mojego "projektu" smile.gif

Jednak w linijce:
  1. this.form.elements['vat_firma'].disabled = this.form.elements['vat_miejscowosc'].disabled = this.form.elements['vat_ulica'].disabled = this.form.elements['vat_nip'].disabled = true;


Jest błąd składni - a ja niestety nie widzę gdzie jest coś nie tak sad.gif


--------------------
Detter
Go to the top of the page
+Quote Post
icetique
post
Post #7





Grupa: Zarejestrowani
Postów: 72
Pomógł: 13
Dołączył: 12.04.2009

Ostrzeżenie: (0%)
-----


Kod
<script type="text/javascript">
function disable()
   {
   document.getElementById('vat_firma').disabled = document.getElementById('vat_miejscowosc').disabled = document.getElementById('vat_ulica').disabled = document.getElementById('vat_nip').disabled = true;
   document.getElementById('vat_firma').className = document.getElementById('vat_miejscowosc').className = document.getElementById('vat_ulica').className = document.getElementById('vat_nip').className = 'disabled';
   }
  
   function enable()
    {
    document.getElementById('vat_firma').disabled = document.getElementById('vat_miejscowosc').disabled = document.getElementById('vat_ulica').disabled = document.getElementById('vat_nip').disabled = false;
   document.getElementById('vat_firma').className = document.getElementById('vat_miejscowosc').className = document.getElementById('vat_ulica').className = document.getElementById('vat_nip').className = '';
    }

</script>

<form>
<input type="text" id="vat_firma" name="vat_firma" disabled="disabled" />
<input type="text" id="vat_miejscowosc" name="vat_firma" disabled="disabled" />
<input type="text" id="vat_ulica" name="vat_firma" disabled="disabled" />
<input type="text" id="vat_nip" name="vat_firma" disabled="disabled" />
<input type="checkbox" name="nazwa" value="wartość" onclick="this.checked ? enable() : disable();" />
</form>


Masz, teraz sprawdzone. Mój błąd. Jak wrzucisz do htmla, to zobaczysz, że działa. Teraz możesz dostosować pod siebie.

Ten post edytował icetique 31.01.2010, 17:42:45
Go to the top of the page
+Quote Post
lnn
post
Post #8





Grupa: Zarejestrowani
Postów: 361
Pomógł: 11
Dołączył: 17.12.2008
Skąd: LU

Ostrzeżenie: (0%)
-----


w jQuery ostatnio robilem podobna funkcje
  1. <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.1.min.js"></script>
  2. <script language="text/javascript">
  3. $(document).ready(function(){
  4. $('input[name=wyzywienie_on]').click(function() {
  5. if (this.checked == true) $(".check").attr('disabled', false); else $(".check").attr('disabled', true);
  6. });
  7.  
  8. });</script>
  9. </head>
  10. <label for="wyzywienie_on">dostępne</label><input type="checkbox" name="wyzywienie_on" />
  11. <label for="nazwa">label</label><input id="input_text" class="check" type="text" name="nazwa" disabled="disabled"><br /></body>


Ten post edytował lnn 31.01.2010, 18:42:09
Go to the top of the page
+Quote Post
detter
post
Post #9





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 6.03.2004
Skąd: Wawa

Ostrzeżenie: (0%)
-----


ok, teraz załapałem smile.gif
Serdecznie dzięki za pomoc! smile.gif


--------------------
Detter
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 09:13