max. 5 Haken in Formular auswählen??

Dieses Thema im Forum "Webentwicklung" wurde erstellt von sCuDs, 20. Dezember 2005 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 20. Dezember 2005
    Hi, ich wollt n Umfrage-Formular machen, wo man in bestimmten bereichen mehrere Haken setzen kann, maximal aber 5. Geht das irgendwie mit JS, dass wenn 5 angekreuzt sind, die anderen verschwinden, und wenn man wieder einen Haken wegnimmt, die anderen wieder erscheinen?
    Danke im Vorraus für die Hilfe

    mfG. sCuDs
     
  2. 20. Dezember 2005

    da ist jetzt mal ein Beispiel und due musst es halt nur noch erweitern wieviel du haben willst


    Hoffe ich konnte dir Helfen

    MFG

    Dj1986
     
  3. 20. Dezember 2005
    eher net...
    ich meinte das so, dass ich z.b. 20 Köstchen zum abhaken hab, aber nur maximal 5 dürfen gewählt werden, die andern werden dann inaktiv...
     
  4. 20. Dezember 2005
    ach so

    ja ok ich schreibe dir eins bis morgen hast du es ok?
     
  5. 20. Dezember 2005
    Code:
     <html>
    <head>
    <script type="text/javascript" language="JavaScript">
     function cbLimit()
     {
    
     with(document.forms[0])
     {
     var cbLimit = 2; // Maximale Auswahl
     var cbCount = 0;
     var cbSel = 0;
    
     /* Anzahl der Checkboxen und der ausgewählten bestimmen */
     for (var n = 0; n < elements.length; n++) 
     {
     if(elements[n].type.toLowerCase() == 'checkbox') // 'radiobutton'
     {
     cbCount += 1; // ++cbCount oder cbCount++ - sieht so aber schöner aus 
     cbSel += elements[n].checked;
     }
     
     }
    
     /* Auswertung */ 
     for (var n = 0; n < cbCount; n++)
     elements[n].disabled = !elements[n].checked && cbSel >= cbLimit;
    
     }
     }
    </script>
    </head>
    
    <body>
    Maximal 2 können gewählt werden:<br>
    <form action="" method="post" name="cbTest">
     <input type="checkbox" name="cb_1" onClick="cbLimit();">
     <input type="checkbox" name="cb_2" onClick="cbLimit();">
     <input type="checkbox" name="cb_3" onClick="cbLimit();">
     <input type="checkbox" name="cb_4" onClick="cbLimit();">
     <input type="checkbox" name="cb_5" onClick="cbLimit();">
     u.s.w. 
     <input type="checkbox" name="cb_945" onClick="cbLimit();">
    </form>
    
    </body>
    </html>
    über eine positive bewertung freu ich mich immer *gg*
     
  6. 21. Dezember 2005
    danke, das ist genau das, was ich brauchte. hast natürlich nen 10er bekommen
    ich glaub, ich sollte doch mal mit JS anfangen

    mfG. sCuDs

    EDIT: @DJ1986 du kriegst natürlich auch nen 10er, auch wenn ich schon was hab
     
  7. 21. Dezember 2005
    dann close mal

    ps: hast du mich schonmal bewertet oder ? *g* weil mein ranking nicht gestiegen ist *gg* egal hab trozdem gerne geholfen
     
  8. 3. Januar 2006
    So, jetz hab ich das noch in nen anderes projekt gepackt.
    Soll zur anmeldung auf ner LAN sein. Hab dazu folgenden Code geschrieben:

    PHP:
    <html>
    <head>
    <script type="text/javascript" language="JavaScript">
        function cbLimit()
        {

            with(document.forms[0])
            {
                var cbLimit = 5; // Maximale Auswahl
                var cbCount = 0;
                var cbSel   = 0;

                /* Anzahl der Checkboxen und der ausgewählten bestimmen */
                for (var n = 0; n < elements.length; n++) 
                {
                    if(elements[n].type.toLowerCase() == 'checkbox') // 'radiobutton'
                    {
                        cbCount += 1;  // ++cbCount oder cbCount++ - sieht so aber schöner aus 
                        cbSel   += elements[n].checked;
                    }
                     
                }

                /* Auswertung */    
                for (var n = 0; n < cbCount; n++)
                    elements[n].disabled = !elements[n].checked && cbSel >= cbLimit;

            }
        }
    </script>
    </head>
    <body>
    <?php

    for( $y  1 $y  <=  144 $y ++)
    {
       
    $free [ $y ] =  1 ;
    }
    include(
    "config.inc.php" );
    $connect  mysql_connect ( $mysqlhost $mysqluser $mysqlpass );
    $dbquery  "SELECT seatID, free, checked FROM seats" ;
    $dbresult  mysql_db_query ( $mysqldb " $dbquery " );
    $dbresnum  mysql_num_rows ( $dbresult );
    for(
    $r  0 $r  $dbresnum $r ++)
    {
       
    $ID  mysql_result ( $dbresult $r "seatID" );
       
    $free [ $ID ] =  mysql_result ( $dbresult $r "free" );
       
    $checked [ $ID ] =  mysql_result ( $dbresult $r "checked" );
    }

    $n  1 ;
    echo 
    "<table border=1 cellspacing=0>" ;
    while(
    $n  <=  144 )
    {
      for(
    $i  1 $i  <=  12 $i ++)
      {
         echo 
    "<tr>" ;

         for(
    $j  1 $j  <=  17 $j ++)
         {
           if( (
    $j  ==  1 ) || ( $j  ==  2 ) )
           {
              if(
    $free [ $n ] !=  0 )
              {
                 echo 
    "<td height='26' width='21'><input type='checkbox' name='cb_ $n ' onClick='cbLimit();'></td>" ;
              }
              else
              {
                 if(
    $checked [ $n ] ==  1 )
                 {
                    echo 
    "<td height='26' width='21'><img src='CHECKED.jpg'></td>" ;
                 }
                 else
                 {
                    echo 
    "<td height='26' width='21'><img src='UNCHECKED.jpg'</td>" ;
                 }
              }
              
              
    $n ++;
           }
           else
           {
              echo 
    "<td height='26' width='21'>&nbsp;</td>" ;
           }
         }

       echo 
    "</tr>" ;
      }
    }
    echo 
    "</table>" ;

    mysql_close ( $connect );
    ?>
    </body>
    </html>
    ziel des ganzen: mann soll maximal 6 plätze reservieren können
    und das ganze wird dann inner datenbank gespeichert (der teil is jetz nicht relevant...)

    das script soll dann aus der datenbank auslesen, welche plätze bereits besetzt sind und diese dann ohne checkbox zeigen, sondern mit farbigen feldern.(eins für vom admin nicht überprüfte anmeldungen und eins für überprüfte anmeldungen)

    das problem: Ich kann beliebig viele Haken setzen, das JS teil verhinderts nicht....

    Hier noch ne demo dazu, die genau das gezeigte script benutzt:
    LANdemo

    bitte um schnelle Hilfe...

    mfG. sCuDs
     
  9. 3. Januar 2006
    also ich steig jetzt nicht richtig durch wieso du das nicht mit if abfragen machst ^^

    die for($j = 1; $j <= 17; $j++) schleifen verwirren mich irgendwie voll ^^

    aber das ist ja nebensache

    ok die for's werden doch benötigt

    du machst

    name='cb_$n

    aber er muss ja mehrere haben und nicht nur eine checkbox

    also musst du mit

    name='cb_[$n]

    arbeiten

    also so hatte ich es mal bei einem projekt gemacht

    also der fehler liegt bei $n würdei ich jetzt sagen hab jetzt nicht alles durchgeguckt aber guck nochmal bei $n nach
     
  10. 3. Januar 2006
    habs grad probiert, macht keine änderung, ich kann nach wie vor alle haken anklicken...
     
  11. 3. Januar 2006
    nur das alleine

    PHP:
    name = 'cb_[$n]
    macht keine änderung du musst mit for each arbeiten



    mal schnell für dich ein bsp

    PHP:
    <form id="form1" name="form1" method="post" action=""> 
      <p> 
        <input name="spiel[]" type="text" id="spiel[]" />  
        spiel1
     
    </p> 
      <p> 
        <input name="spiel[]" type="text" id="spiel[]2" /> 
        spiel2</p> 
      <p> 
        <input name="spiel[]" type="text" id="spiel[]3" /> 
        spiel3</p> 
      <p> 
        <input name="spiel[]" type="text" id="spiel[]4" /> 
        spiel4</p> 
      <p> 
        <input name="spiel[]" type="text" id="spiel[]5" /> 
        spiel5</p> 
      <p> 
        <input name="spiel[]" type="text" id="spiel[]6" /> 
        spiel6</p> 
      <p> 
        <input name="spiel[]" type="text" id="spiel[]7" /> 
        spiel7</p> 
      <p> 
        <input name="spiel[]" type="text" id="spiel[]8" /> 
        spiel8</p> 
      <p> 
        <input type="submit" name="Submit" value="Submit" /> 
      </p> 
    </form> 
    </body> 
    </html> 
     
    <? 
    if ( $Submit

       for(
    $i = 0 ; $i < count ( $spiel ); $i ++) 
       { 
           echo 
    $spiel [ $i ]; 
       } 

    ?>
     
  12. 3. Januar 2006
    Hä?
    Ich weis grad net, was du mir damit sagen willst!?
    falls du es noch nicht bemerkt haben solltest, die Checkboxen werden beim aufruf dynamisch generiert, daher auch die verschachtelten for-Schleifen...
    dabei werden ummer zwei spalten nebeneunander gesetzt und dann eine leere (mittels Spaltennummer%3 damit das passt)

    irgendwie komm ich nich auf den zusammenhang zwischen deinem beispiel und meinem problem ?(
     
  13. 3. Januar 2006
    naja egal warten wir halt bis jemand anders dir helfen kann

    ich hab es so gemacht bei meinem projekt und es hat gefunzt


    EDIT://

    Was hasten du ? Dein script funzt doch ich kann nur 5 checkboxen aktivieren
     
  14. 3. Januar 2006
    tjaaaa, und ich weis auch woran das liegt...
    Ich trottel hatte vergessen den <form> tag drumrum zu setzen
    dann gehts auch...
     
  15. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.