Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    residenza
    Bologna
    Messaggi
    38

    Valore null in un loop javascript

    Ciao a tutti, sono alle prese con un problemino che non riesco proprio a risolvere, spero in un vostro aiuto.

    Con questo script effettuo un controllo su una serie di select con le stesse identiche opzioni per impedire ai miei utenti di inviare valori duplicati:

    codice:
    function checkDropdowns() {
     var iDropdowns = 5;
     var sValue;
     var sValue2;
     for(var i = 1; i <= iDropdowns; ++i) {
     sValue = document.getElementById('drop' + i).value;
     for(var j = 1; j <= iDropdowns; ++j) {
     sValue2 = document.getElementById('drop' + j).value;
     if ( i != j && sValue == sValue2 ) {
     alert('Hai selezionato due o più giocatori uguali!');
      return false;
       }
         }
          } 
        return true; }
    e questo è il form:

    codice:
    <form  action="<?php echo $editFormAction; ?>" onsubmit="return(validate());" method="post" name="form1">              
     <table width="100%" border="0">                
            <tr>
     <td class="table1">Offerte</td>
    </tr>
    <tr>
    <td>
     <select name="rc_player1" id="drop1">
      <option value="%">Seleziona</option>
      <?php do {  ?>
       <option value="<?php echo $row_comboplayer['id']?>"><?php echo $row_comboplayer['playerName']?> [<?php echo $row_comboplayer['playerOverall']; ?>] [<?php echo $row_comboplayer['playerLevel']; ?>]</option>
                        <?php
    } while ($row_comboplayer = mysql_fetch_assoc($comboplayer));
      $rows = mysql_num_rows($comboplayer);
      if($rows > 0) {
          mysql_data_seek($comboplayer, 0);
    	  $row_comboplayer = mysql_fetch_assoc($comboplayer);
      }
    ?>
       </select>
        </td>
        </tr>
    <tr>
    <td>
     <select name="rc_player2" id="drop2">
      <option value="%">Seleziona</option>
      <?php do {  ?>
       <option value="<?php echo $row_comboplayer['id']?>"><?php echo $row_comboplayer['playerName']?> [<?php echo $row_comboplayer['playerOverall']; ?>] [<?php echo $row_comboplayer['playerLevel']; ?>]</option>
                        <?php
    } while ($row_comboplayer = mysql_fetch_assoc($comboplayer));
      $rows = mysql_num_rows($comboplayer);
      if($rows > 0) {
          mysql_data_seek($comboplayer, 0);
    	  $row_comboplayer = mysql_fetch_assoc($comboplayer);
      }
    ?>
       </select>
        </td>
        </tr>
    <tr>
    <td>
     <select name="rc_player3" id="drop3">
      <option value="%">Seleziona</option>
      <?php do {  ?>
       <option value="<?php echo $row_comboplayer['id']?>"><?php echo $row_comboplayer['playerName']?> [<?php echo $row_comboplayer['playerOverall']; ?>] [<?php echo $row_comboplayer['playerLevel']; ?>]</option>
                        <?php
    } while ($row_comboplayer = mysql_fetch_assoc($comboplayer));
      $rows = mysql_num_rows($comboplayer);
      if($rows > 0) {
          mysql_data_seek($comboplayer, 0);
    	  $row_comboplayer = mysql_fetch_assoc($comboplayer);
      }
    ?>
       </select>
        </td>
        </tr>
    <tr>
    <td>
     <select name="rc_player4" id="drop4">
      <option value="%">Seleziona</option>
      <?php do {  ?>
       <option value="<?php echo $row_comboplayer['id']?>"><?php echo $row_comboplayer['playerName']?> [<?php echo $row_comboplayer['playerOverall']; ?>] [<?php echo $row_comboplayer['playerLevel']; ?>]</option>
                        <?php
    } while ($row_comboplayer = mysql_fetch_assoc($comboplayer));
      $rows = mysql_num_rows($comboplayer);
      if($rows > 0) {
          mysql_data_seek($comboplayer, 0);
    	  $row_comboplayer = mysql_fetch_assoc($comboplayer);
      }
    ?>
       </select>
        </td>
        </tr>
    <tr>
    <td>
     <select name="rc_player5" id="drop5">
      <option value="%">Seleziona</option>
      <?php do {  ?>
       <option value="<?php echo $row_comboplayer['id']?>"><?php echo $row_comboplayer['playerName']?> [<?php echo $row_comboplayer['playerOverall']; ?>] [<?php echo $row_comboplayer['playerLevel']; ?>]</option>
                        <?php
    } while ($row_comboplayer = mysql_fetch_assoc($comboplayer));
      $rows = mysql_num_rows($comboplayer);
      if($rows > 0) {
          mysql_data_seek($comboplayer, 0);
    	  $row_comboplayer = mysql_fetch_assoc($comboplayer);
      }
    ?>
       </select>
        </td>
        </tr>
    <tr>
    <td>
    <input class="submitbutton" name="mysubmit" onclick="return checkDropdowns();" type="submit" value="Aggiungi Offerta" /></td>
    </tr>
    </table>
    </form>
    I miei utenti non sono obbligati ad effettuare tutte e 5 le selezioni e questo controllo funziona solo se in tutte le select viene selezionata un opzione.
    Come posso modificare lo script ed evitare che il valore null (che mel mio caso è "%") venga considerato?

  2. #2

    Re: Valore null in un loop javascript

    Originariamente inviato da botmite
    Ciao a tutti, sono alle prese con un problemino che non riesco proprio a risolvere, spero in un vostro aiuto.

    Con questo script effettuo un controllo su una serie di select con le stesse identiche opzioni per impedire ai miei utenti di inviare valori duplicati:

    codice:
    function checkDropdowns() {
     var iDropdowns = 5;
     var sValue;
     var sValue2;
     for(var i = 1; i <= iDropdowns; ++i) {
     sValue = document.getElementById('drop' + i).value;
     for(var j = 1; j <= iDropdowns; ++j) {
     sValue2 = document.getElementById('drop' + j).value;
     if ( i != j && sValue == sValue2 ) {
     alert('Hai selezionato due o più giocatori uguali!');
      return false;
       }
         }
          } 
        return true; }
    e questo è il form:

    codice:
    <form  action="<?php echo $editFormAction; ?>" onsubmit="return(validate());" method="post" name="form1">              
     <table width="100%" border="0">                
            <tr>
     <td class="table1">Offerte</td>
    </tr>
    <tr>
    <td>
     <select name="rc_player1" id="drop1">
      <option value="%">Seleziona</option>
      <?php do {  ?>
       <option value="<?php echo $row_comboplayer['id']?>"><?php echo $row_comboplayer['playerName']?> [<?php echo $row_comboplayer['playerOverall']; ?>] [<?php echo $row_comboplayer['playerLevel']; ?>]</option>
                        <?php
    } while ($row_comboplayer = mysql_fetch_assoc($comboplayer));
      $rows = mysql_num_rows($comboplayer);
      if($rows > 0) {
          mysql_data_seek($comboplayer, 0);
    	  $row_comboplayer = mysql_fetch_assoc($comboplayer);
      }
    ?>
       </select>
        </td>
        </tr>
    <tr>
    <td>
     <select name="rc_player2" id="drop2">
      <option value="%">Seleziona</option>
      <?php do {  ?>
       <option value="<?php echo $row_comboplayer['id']?>"><?php echo $row_comboplayer['playerName']?> [<?php echo $row_comboplayer['playerOverall']; ?>] [<?php echo $row_comboplayer['playerLevel']; ?>]</option>
                        <?php
    } while ($row_comboplayer = mysql_fetch_assoc($comboplayer));
      $rows = mysql_num_rows($comboplayer);
      if($rows > 0) {
          mysql_data_seek($comboplayer, 0);
    	  $row_comboplayer = mysql_fetch_assoc($comboplayer);
      }
    ?>
       </select>
        </td>
        </tr>
    <tr>
    <td>
     <select name="rc_player3" id="drop3">
      <option value="%">Seleziona</option>
      <?php do {  ?>
       <option value="<?php echo $row_comboplayer['id']?>"><?php echo $row_comboplayer['playerName']?> [<?php echo $row_comboplayer['playerOverall']; ?>] [<?php echo $row_comboplayer['playerLevel']; ?>]</option>
                        <?php
    } while ($row_comboplayer = mysql_fetch_assoc($comboplayer));
      $rows = mysql_num_rows($comboplayer);
      if($rows > 0) {
          mysql_data_seek($comboplayer, 0);
    	  $row_comboplayer = mysql_fetch_assoc($comboplayer);
      }
    ?>
       </select>
        </td>
        </tr>
    <tr>
    <td>
     <select name="rc_player4" id="drop4">
      <option value="%">Seleziona</option>
      <?php do {  ?>
       <option value="<?php echo $row_comboplayer['id']?>"><?php echo $row_comboplayer['playerName']?> [<?php echo $row_comboplayer['playerOverall']; ?>] [<?php echo $row_comboplayer['playerLevel']; ?>]</option>
                        <?php
    } while ($row_comboplayer = mysql_fetch_assoc($comboplayer));
      $rows = mysql_num_rows($comboplayer);
      if($rows > 0) {
          mysql_data_seek($comboplayer, 0);
    	  $row_comboplayer = mysql_fetch_assoc($comboplayer);
      }
    ?>
       </select>
        </td>
        </tr>
    <tr>
    <td>
     <select name="rc_player5" id="drop5">
      <option value="%">Seleziona</option>
      <?php do {  ?>
       <option value="<?php echo $row_comboplayer['id']?>"><?php echo $row_comboplayer['playerName']?> [<?php echo $row_comboplayer['playerOverall']; ?>] [<?php echo $row_comboplayer['playerLevel']; ?>]</option>
                        <?php
    } while ($row_comboplayer = mysql_fetch_assoc($comboplayer));
      $rows = mysql_num_rows($comboplayer);
      if($rows > 0) {
          mysql_data_seek($comboplayer, 0);
    	  $row_comboplayer = mysql_fetch_assoc($comboplayer);
      }
    ?>
       </select>
        </td>
        </tr>
    <tr>
    <td>
    <input class="submitbutton" name="mysubmit" onclick="return checkDropdowns();" type="submit" value="Aggiungi Offerta" /></td>
    </tr>
    </table>
    </form>
    I miei utenti non sono obbligati ad effettuare tutte e 5 le selezioni e questo controllo funziona solo se in tutte le select viene selezionata un opzione.
    Come posso modificare lo script ed evitare che il valore null (che mel mio caso è "%") venga considerato?

    Spero di aver capito quello che ti serve,
    ma potresti non eseguire il confronto se i due valori sono uguali a="%"

    nella funzione js a cavallo del confronto "==" aggiungi:

    if (sValue2 == "%" || sValue == "%" ) { /*non fare nulla */ } else {
    if ( i != j && sValue == sValue2 )
    { alert('Hai selezionato due o più giocatori uguali!'); return false; }
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2012
    residenza
    Bologna
    Messaggi
    38
    Hai capito perfettamente, e io sono uno niubbo, mi sono perso in un bicchier d'acqua.

    Grazie Luigi, funziona

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 © 2026 vBulletin Solutions, Inc. All rights reserved.