Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400

    Controllo particolare su select multiple

    Ciao a tutti.

    Ho questo script:

    codice:
    <html>
    <head>
    <script language="JavaScript" type="text/JavaScript">
     
    <!--
      
    function convalidaForm(Qform) 
    {
     
    
      for (var a = 0; a < Qform.elements.length; a++) 
    	{
    	var campo = Qform.elements[a];
     
          	if ((campo.value == '') || (campo.value == 'undefined')) 
    		{
            	window.alert('Il campo "' + campo.name +'"\nč un campo obbligatorio in questo form.');
            	campo.focus();
            	return false;
          		}
            }
          		
     
      // Abilita l'invio del FORM
      return(true);
    }
      
    //-->
     
    </script>
     
    </head>
    <body>
    
    <form method="post" action="test.asp" onsubmit="return(convalidaForm(this));">
    
    <select size="6" name="preferenza" multiple>
    <option>Seleccionar</option>
    <option value="Pippo">1-Pippo</option>
    <option value="Vittorio">2-Vittorio</option>
    <option value="Luigi">3-Luigi</option>
    <option value="Pasticcio>4-Pasticcio</option>
    <option value="Giasso">5-Giasso</option>
    <option value="Proietti">6-Proietti</option>
    </select>
    
    <input type="text" name="securityCode" id="securityCode" size="20" maxlength="12" autocomplete="off" />
    
    </form>
    </body>
    </html>
    Come faccio oltre a controllare che la select non sia vuota che siano selezionati almeno tre dei sei valori presentati ?

    Grazie-

  2. #2
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    I valori selezionati nella multiple devono essere tre, nč uno in meno e nč uno in pių.
    Nessuna idea? Con la ricerca ho trovato questa ma accetta anche 1 e 2 valori:

    codice:
    <SCRIPT>
    var vecchie = new Array();
    
    function conta(s) {
    	quante = 0;
    	nuove = new Array();
    	for (var i=0;i<s.length;i++) {
    		if(s.options[i].selected) {
    			quante++;
    			nuove[i] = true;
    		} else {
    			nuove[i] = false;
    		}
    	} 
    	if(quante>3) {
    		alert("Troppe!");
    		for (var i=0;i<s.length;i++) {
    			s.options[i].selected = vecchie[i];
    		}
    	} else {
    		vecchie = nuove;
    	}
    }
    </SCRIPT>
    
    <select size="6" name="preferenza" multiple onchange="conta(this)">

  3. #3
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Niente non ci riesco...

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    codice:
    <SCRIPT>
    var vecchie = new Array();
    
    function conta(s) {
    	quante = 0;
    	nuove = new Array();
    	for (var i=0;i<s.length;i++) {
    		if(s.options[i].selected) {
    			quante++;
    			nuove[i] = true;
    		} else {
    			nuove[i] = false;
    		}
    	} 
    	if(quante != 3) {
    		//alert("Seleziona 3 opzioni");
    		for (var i=0;i<s.length;i++) {
    			s.options[i].selected = vecchie[i];
    		}
    	} else {
    		vecchie = nuove;
    	}
    }
    </SCRIPT>
    
    <select size="6" name="preferenza" multiple onchange="conta(this)">
       <option value="1">1</option>
       <option value="2">2</option>
       <option value="3">3</option>
       <option value="4">4</option>
       <option value="5">5</option>
       <option value="6">6</option>
    </select>
    Ciao
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Grazie fcaldera, ma non funziona... non si riesce a selezionare nemmeno una voce della select multiple... quando ci clicco sopra il valore non si seleziona...

  6. #6

  7. #7
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    si č vero perchč il ciclo for successivo all'alert rimette la select nello stato iniziale...

    Ma tu come lo devi integrare questo script ? E' collegato ad un form da inviare?
    Quando (in corrispondenza di quale evento) devi fare il controllo sul numero di options selezionate?
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  8. #8
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Grazie, posto il codice completo:

    codice:
    <html>
    <head>
    <script language="JavaScript" type="text/JavaScript">
     
    <!--
      
    function convalidaForm(Qform) 
    {
     
    if (Qform.preferenza.value == "") 
    { 
    alert("KO."); 
    Qform.preferenza.focus(); 
    return false; 
    } 
     
    if (Qform.securityCode.value == "") 
    { 
    alert("KO"); 
    Qform.securityCode.focus(); 
    return false; 
    } 
             
      // Abilita l'invio del FORM
      return(true);
    }
      
    //-->
     
    </script>
    
    <script language="JavaScript" type="text/JavaScript">
     
    <!--
    
    var vecchie = new Array();
    
    function conta(s) {
    	quante = 0;
    	nuove = new Array();
    	for (var i=0;i<s.length;i++) {
    		if(s.options[i].selected) {
    			quante++;
    			nuove[i] = true;
    		} else {
    			nuove[i] = false;
    		}
    	} 
    	if(quante>3) {
    		alert("Troppe!");
    		for (var i=0;i<s.length;i++) {
    			s.options[i].selected = vecchie[i];
    		}
    	} else {
    		vecchie = nuove;
    	}
    }
    
     //-->
     
    </script>
      
    </head>
    <body>
     
    <form method="post" action="test.asp" onsubmit="return(convalidaForm(this));">
     
    <select size="6" name="preferenza" multiple onchange="conta(this)">
    <option>Selezionare valore</option>
    <option value="Pippo">1-Pippo</option>
    <option value="Vittorio">2-Vittorio</option>
    <option value="Luigi">3-Luigi</option>
    <option value="Pasticcio>4-Pasticcio</option>
    <option value="Giasso">5-Giasso</option>
    <option value="Proietti">6-Proietti</option>
    </select>
     
    <input type="text" name="securityCode" id="securityCode" size="20" maxlength="12" autocomplete="off" />
     
    </form>
    </body>
    </html>
    Grazie,
    WW

  9. #9
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    togli l'evento onchange dalla select. Meglio se fai il controllo del numero delle options sulla funzione che richiami all'onsubmit del form modificando la funzione cosė

    codice:
    function convalidaForm(Qform) {
    
        var numopt = 0;
        var sel = Qfrom.preferenza;
    
    
        if (Qform.preferenza.value == "") { 
            alert("KO."); 
            Qform.preferenza.focus(); 
            return false; 
        } 
         
        if (Qform.securityCode.value == "") { 
            alert("KO"); 
            Qform.securityCode.focus(); 
            return false; 
        } 
    
    
    
        for (i=0; i<sel.length; i++) {
           if (sel.options[i].selected) ++numopt;
        }
    
        if (numopt != 3) {
           alert('seleziona 3 otpions');
           return false;
        }
        return true;
    
    
    }
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  10. #10
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Grazie adesso se nella select multiple non ci sono 3 valori selezionati il form non parte... MILLE GRAZIE !!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.