Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] Jak zablokować za pomocą funkcji wszystkie pola typu checkbox?
Forum PHP.pl > Forum > Przedszkole
sspawlik
Witam. Mam przygotowany skrypt który po określonym czasie ma wykonać daną funkcję. Potrzebuje teraz funkcji która zablokuje na stronie wszystkie pola checkbox. Proszę o pomoc.
Kod
<script type="text/javascript">
<!-- <![CDATA[

function wykonaj() {
  
FUNKCJA WYŁĄCZAJĄCA POLA CHECKBOX ?  

   }

setTimeout("wykonaj()", 3000);

// ]]> -->
</script>
skowron-line
Będą Ci potrzebne następujące funkcję
https://developer.mozilla.org/en/DOM/elemen...ementsByTagName pobierasz wszystkie inputy z całego dokumentu.
https://developer.mozilla.org/En/DOM/Element.getAttribute sprawdzasz type czy jest checkbox
https://developer.mozilla.org/En/SetAttribute ustawiasz atrybut disabled.
cojack
  1. <script type="text/javascript">
  2. /**
  3. * Metoda blokuje checkboxy w formularzu
  4. *
  5. * @param string id formularza
  6. */
  7. this.disableCheckbox = function( formId )
  8. {
  9. var checkboxs = document.getElementById( formId );
  10. for( i = 0; i < checkboxs.length; i++ )
  11. if( checkboxs.elements[ i ].type == 'checkbox' )
  12. checkboxs.elements[ i ].disable = false;
  13. }
sspawlik
Cytat(cojack @ 22.11.2009, 15:38:02 ) *
[HTML] pobierz, plaintext
  1. <script type="text/javascript">
  2. /**
  3. * Metoda blokuje checkboxy w formularzu
  4. *
  5. * @param string id formularza
  6. */
  7. this.disableCheckbox = function( formId )
  8. {
  9. var checkboxs = document.getElementById( formId );
  10. for( i = 0; i < checkboxs.length; i++ )
  11. if( checkboxs.elements[ i ].type == 'checkbox' )
  12. checkboxs.elements[ i ].disable = false;
  13. }
  14. </script>
[HTML] pobierz, plaintext


niestety nie pomogło? nadal nie wiem co jest może źle coś wpisuje w swój kod albo ten skrypt jest niepoprawny?
Pawel_W
skrypt całkiem zwalony, łap ten:

  1. <script type="text/javascript">
  2. function disableCheckbox()
  3. {
  4. var checkboxs = document.getElementsByTagName('input');
  5. for(i=0;i< checkboxs.length;i++)
  6. if(checkboxs.type == 'checkbox')
  7. checkboxs.disable = true;
  8. }
sspawlik
No widzę ze powinno działać ale niestety nie:( ? Zapisuje to tak, Pola checkbox które sa poniżej po 3 sekundach nadal są aktywne:(?

CODE

<script type="text/javascript">
<!-- <![CDATA[

function disableCheckbox(){


var checkboxs = document.getElementsByTagName('input');
for(i=0;i< checkboxs.length;i++)
if(checkboxs.elements[i].type == 'checkbox')
checkboxs.elements[i].disable = true;
}

setTimeout("disableCheckbox()", 3000);

// ]]> -->
</script>

cojack
Nie wiem jak u Was ale u mnie moja metoda działa winksmiley.jpg
sspawlik
Znajomy mówi że trzeba: trzeba uruchomic i sprawdzic zmienne, wykonac testy
ale jakie zmienne i jak je uruchomić?
kefirek
Prosty kodzik
Kod
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function(){
setTimeout("disable()", 3000);
})

function disable() {
$('input[name=test\[\]]').attr('disabled', true);
}

</script>
</head>
<body>

<input name="test[]" type="checkbox" />
<input name="test[]" type="checkbox" />
<input name="test[]" type="checkbox" />
<input name="test[]" type="checkbox" />


</body>
</html>
Pawel_W
Cytat(cojack @ 23.11.2009, 19:08:08 ) *
Nie wiem jak u Was ale u mnie moja metoda działa winksmiley.jpg

ciekawe jak jak robisz loopa obiektu, a powinieneś jego tablicy elements...

mój kod też by działał jakbym nie skopiował Twojego kodu z błędami -.-
w poprzednim poście jest poprawiona wersja
cojack
  1. /**
  2. * Metoda zlicza ilość zaznaczonych checkboxów w formularzu
  3. *
  4. * @param string id form'a
  5. * @return int Zwraca ilość zaznaczonych checkboxów
  6. */
  7. this.countCheckedCheckbox = function( formId )
  8. {
  9. var categories = document.getElementById( formId );
  10. var checkeds = 0;
  11. for( i = 0; i < categories.length; i++ )
  12. if( categories.elements[ i ].checked == true )
  13. checkeds++;
  14.  
  15. return checkeds;
  16. }

Ty to też nie działa co? ^^

@edit
prosto z projektu wyrywam kod a ten mi pisze że nie działa biggrin.gif
sspawlik
Cytat(kefirek @ 23.11.2009, 20:34:32 ) *
Prosty kodzik
Kod
<html>
<head>
   <script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function(){
setTimeout("disable()", 3000);
})

function disable() {
$('input[name=test\[\]]').attr('disabled', true);
}

</script>
</head>
<body>

<input name="test[]" type="checkbox" />
<input name="test[]" type="checkbox" />
<input name="test[]" type="checkbox" />
<input name="test[]" type="checkbox" />


</body>
</html>


Kefirek ten kod działa ale jak mam name o takiej wartości: name="o_'.$r['id'].'[]" to jak mam zapisać to w kodzie? Aby zblokowało checkboxy?
cojack
Jak już na siłę chcesz jquery to zrób tak:

  1. $(document).ready(function() {
  2. $("input:checkbox").attr("disabled","disabled");
  3. });


@edit
poprawiłem z :checkbox na input:checkbox tak w dokumentacji zalecają.

@edit2
a może tak dziękuje chociaż?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.