[JS] Liczenie checkboxów

 
Napisz nowy tematOdpowiedz do tematu    Forum programistyczne Programmers Zone Strona Główna -> (X)HTML, CSS, JS, VBS
Autor Wiadomość
os_alfa
~user




Dołączył: 31 Maj 2008
Posty: 61


PostWysłany: 09-01-10 20:35 Zacytuj zaznaczone Odpowiedz z cytatem

---------- 19:47 09.01.2010 ----------

Dlaczego tu zliczanie checkboxów działa:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
      <title>Untitled</title>
</head>

<body>
<form method="post" name=test>

Javascript:
<script language="JavaScript1.3">
function licz(form) {
var zaznaczone = 0;
var limit = 3;
var max = form.ckbox.length;
for (var idx = 0; idx < max; idx++) {
if (eval("document.test.ckbox[" + idx + "].checked") == true) {
zaznaczone += 1;
}
}
document.getElementById("check").value=zaznaczone + "/" + max;
}
zaznaczone=0; //jeśli jakieś checkboxy są domyślnie zaznaczone, to tu wpisać ich liczbę
max=2;
function sprawdz(ktory) {
if(!ktory.checked) zaznaczone--; else if(zaznaczone==max) {ktory.checked=0; alert('[komunikat...]');} else zaznaczone++;
}
</script>
HTML:

1<input type="checkbox" name="ckbox" value="1" onclick="licz(this.form);sprawdz(this)" /> checkbox 1<BR />
2<input type="checkbox" name="ckbox" value="2" onclick="licz(this.form);sprawdz(this)" /> checkbox 2<BR />
3<input type="checkbox" name="ckbox" value="3" onclick="licz(this.form);sprawdz(this)" /> checkbox 3<BR />
4<input type="checkbox" name="ckbox" value="4" onclick="licz(this.form);sprawdz(this)" /> checkbox 4<BR />
5<input type="checkbox" name="ckbox" value="5" onclick="licz(this.form);sprawdz(this)" /> checkbox 5<BR />
6<input type="checkbox" name="ckbox" value="6" onclick="licz(this.form);sprawdz(this)" /> checkbox 6<BR />
7<input type="checkbox" name="ckbox" value="7" onclick="licz(this.form);sprawdz(this)" /> checkbox 7<BR />
<input type="button" onclick="licz(this.form)" value=" -=lol=- " /><br><br>Zaznaczono :
<input name="check" type="text" size="1">
</form>
</body>
</html>

A u mnie wyskakuje że jezyk nie jest obiektem lub jest pusty.
HTML:
<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>


Javascript:
<script  type="text/javascript">
<!--
var kontrolka=0;
function testext(field)
{
  var tekst=field.value
  var lntext=field.value.length
  if (lntext<=2 || lntext>=20)
  {
    alert("Błąd!!!\nPole musi zawierać od 2 do 20 znaków")
    return field.value=""
    }
  for(var i=0;i<lntext;i++)
  {
    var litera=tekst.charCodeAt(i)
    if (!((litera>=65 && litera<=90) || (litera>=97 && litera<=122) || (litera===211) || (litera===243) || (litera>=260 && litera<=263) || (litera>=280 && litera<=281) || (litera>=321 && litera<=324) || (litera===345) || (litera===347) || (litera>=377 && litera<=380)))
    {
      alert("Błąd!!!\nPole może zawierać tylko litery")
      return field.value=""
      break
    }
  }
}
function testwoj(field)
{
  if (field.selectedIndex==0)
  alert("Błąd!!!\nProszę wybrać województwo")
}
function testkod(field)
{
  var kod=/[\d]{2}-[\d]{3}/
  if (!(kod.test(field.value)))
  {
    alert("Błąd!!!\nNieprawidłowy format kodu")
    return field.value=""
  }
}
function testmail(field)
{
  var mail=/^[0-9a-z_.-]+@+[0-9a-z.-]+\.[a-z]{2,3}$/i
  if (!(mail.test(field.value)))
  {
    alert("Błąd!!!\nNieprawidłowy format maila")
    return field.value=""
  }
}
function testip(field)
{
  var ip=/[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}/
  if(!((ip.test(field.value)) || (field.value=="")))
  {
    alert("Błąd!!!\nNieprawidłowy format ip");
    return field.value=""
  }
}
function testurl(field)
{
  var url=/^(www\.|http:\/\/|https:\/\/|ftp:\/\/)[\w\d\.:#%/;$()~_?\-=\\&]+$/
  if(!((url.test(field.value)) || (field.value=="")))
  {
    alert("Błąd!!!\nNieprawidłowy format url");
    return field.value=""
  }
}
function testhaslo(field)
{
  var haslo=/^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$/
  if(!((haslo.test(field.value))))
  {
    alert("Błąd!!!\nZa słabe hasło");
    return field.value=""
  }
}
function liczcheckbox(form)
{
  var zaznaczone=0;
  var max=form.jezyk.length;
  for (var i=0;i<max;i++)
  {
    if(eval("document.test.jezyk["+i+"].checked")==true)
    zaznaczone+=1;
  }
  alert(zaznaczone);
}
//-->
</script>

css:
<style type="text/css">
DIV.red {
  background-color:red
 }
*.center {
  text-align: center
 }
TABLE {
  text-align: left ; margin-left: auto ; width: 400 ; margin-right: auto
 }
 td {
   text-align:left;
 }
</style>

HTML:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
      <meta  name="Author" content="Krzysztof Wolski" />
      <title>Formularz studencki</title>
</head>
<body>

<h4 class="center" title="Wersja 0.1">
Formularz studencki
</h4>

<form  id="formularz" action="mailto:wolski.krzysztof@wp.eu?subject=Formularz_studencki" method="post"
onreset="if (!confirm('Czy na pewno chcesz wyczyścić cały formularz?')) return false"
enctype="text/plain">



<hr />
<div  class="center red">
 Wybierz trzy języki programowania których zamierzasz się uczyć:
</div>
<hr />
 
 <table>
 <tr><td>&#9679</td><td><label for="pole0">C</label></td><td><input  type="checkbox" name="jezyk" value="c" id="pole0" onmouseup="liczcheckbox(this.form)" /></td></tr>
 <tr><td>&#9679</td><td><label for="pole1">C++</label></td><td><input  type="checkbox" name="jezyk" value="c++" id="pole1" onmouseup="liczcheckbox(this.form)" /></td></tr>
 <tr><td>&#9679</td><td><label for="pole2">Java</label></td><td><input  type="checkbox" name="jezyk" value="java" id="pole2" onmouseup="liczcheckbox(this.form)" /></td></tr>
 <tr><td>&#9679</td><td><label for="pole3">Pearl</label></td><td><input  type="checkbox" name="jezyk" value="pearl" id="pole3" onmouseup="liczcheckbox(this.form)" /></td></tr>
 <tr><td>&#9679</td><td><label for="pole4">Delphi</label></td><td><input  type="checkbox" name="jezyk" value="delphi" id="pole4" onmouseup="liczcheckbox(this.form)" /></td></tr>
 </table>
 
 
<hr />
<div class="center red">
Wypełnij dane osobowe(wszystkie pola są wymagane):
</div>
<hr />

<table>
<tr><td>Imię:</td><td><input  type="text" name="imie" onblur="testext(this)" /></td></tr>
<tr><td>Nazwisko:</td><td><input  type="text" name="nazwisko" onblur="testext(this)" /></td></tr>
<tr><td>Miasto:</td><td><input  type="text" name="miasto" onblur="testext(this)" /></td></tr>
<tr><td>Kod pocztowy:</td><td><input  type="text" name="kod" maxlength="6" onblur="testkod(this)" /></td></tr>
<tr><td>Województwo:</td><td><select  name="wojewodztwo" onblur="testwoj(this)">
<option>Wybierz</option>
<option>Dolnośląskie</option>
<option>Kujawsko-Pomorskie</option>
<option>Lubuskie</option>
<option>Lubelskie</option>
<option>Łódzkie</option>
<option>Małopolskie</option>
<option>Mazowieckie</option>
<option>Opolskie</option>
<option>Podlaskie</option>
<option>Podkarpackie</option>
<option>Pomorskie</option>
<option>Śląskie</option>
<option>Świętkorzyskie</option>
<option>Warmińsko-Mazurskie</option>
<option>Wielkopolskie</option>
<option>Zachodniopomorskie</option>
</select></td></tr>
<tr><td>E-mail:</td><td><input  type="text" name="email" onblur="testmail(this)" /></td></tr>
<tr><td>IP:</td><td><input  type="text" name="ip" maxlength="15" onblur="testip(this)" /></td></tr>
<tr><td>URL:</td><td><input  type="text" name="url" value="http://" onblur="testurl(this)" /></td></tr>
<tr><td>Hasło:</td><td><input  type="password" name="haslo" onblur="testhaslo(this)" /></td></tr>
</table>
<div>
<br />
<br />
</div>
<div class="center">
 <input type="submit" value="Wyślij" />&nbsp;
&nbsp;<input type="reset" value="Wyczyść" />
</div>
</form>
</body>
</html>

Proszę się nie przerażać ilością kodu, wstawiłem go całego bo jestem zielony w tym temacie i pomyślałem że coś zepsułem wcześniej. Przepraszam za źle dobrane kolorowanie kodu ale to wydawało mi się odpowiednie dla tego fragmentu. To żółte i tak chyba nie ma znaczenia. Końcowy efekt ma być taki że element po w pierwszej kolumnie tabeli będzie zmieniał kolor z podstawowego na inny po zaznaczeniu checkboxa i zmieni na jeszcze inny jeśli checkbox przekroczy liczbę maksymalną ale najpierw muszę umieć je policzyć i tu się zaczynają schody.

---------- 20:35 ----------

Dobra wiem:D, test to nazwa formularza a nie jakieś cuś z JS
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Numer GG
Wyświetl posty z ostatnich:   
Napisz nowy tematOdpowiedz do tematu    Forum programistyczne Programmers Zone Strona Główna -> (X)HTML, CSS, JS, VBS Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

Mapa
Powered by phpBB © 2001, 2005 phpBB Group

 Polecane strony