Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Campo vuoto o nullo

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    1,171

    Campo vuoto o nullo

    Devo controllare due campi testo in javascript.
    se il campo codice è pieno, il campo valore deve essere maggiore di 0 e non vuoto.
    se viene cancellato il valore quindi campo vuoto mi deve dare alert,
    ho provato così:
    var codice=form1.codice.value;
    var valore=form1.valore.value;
    if (codice !="") && (valore ==0)
    {alert ecc......}
    devo controllare anche se codice è vuoto e se valore è >0
    e se Codice pieno e valore vuoto.

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Se devi eseguire un controllo generico sui due valori presi assieme, puoi usare l'operatore ^ (XOR) che copre tutte le casistiche da te indicate, secondo questa tabella della verità:

    A
    B
    A XOR B
    0 0 0
    0 1 1
    1 0 1
    1 1 0
    Un esempio pratico:
    codice:
    <!DOCTYPE HTML>
    <html>
      <head>
        <title>Esempio</title>
        <meta charset="utf-8">
        <script type="text/javascript">
          function controlloCampi(){
            var codice = form1.codice.value;
            var valore = form1.valore.value;
            if (codice != "" ^ valore > 0){
              alert('errore')
            } else {
              alert('tutto ok')
            }
          }
        </script>
      </head>
      <body>
        <form id="form1">
          codice <input id="codice">
          <br>valore <input id="valore">
          <br><br><input type="button" value="CONTROLLA" onclick="controlloCampi()">
        </form>
      </body>
    </html>
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    1,171
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Se devi eseguire un controllo generico sui due valori presi assieme, puoi usare l'operatore ^ (XOR) che copre tutte le casistiche da te indicate, secondo questa tabella della verità:

    A
    B
    A XOR B
    0 0 0
    0 1 1
    1 0 1
    1 1 0
    Un esempio pratico:
    codice:
    <!DOCTYPE HTML>
    <html>
      <head>
        <title>Esempio</title>
        <meta charset="utf-8">
        <script type="text/javascript">
          function controlloCampi(){
            var codice = form1.codice.value;
            var valore = form1.valore.value;
            if (codice != "" ^ valore > 0){
              alert('errore')
            } else {
              alert('tutto ok')
            }
          }
        </script>
      </head>
      <body>
        <form id="form1">
          codice <input id="codice">
          <br>valore <input id="valore">
          <br><br><input type="button" value="CONTROLLA" onclick="controlloCampi()">
        </form>
      </body>
    </html>
    forse ho sbagliato io.

    script type="text/javascript">
    function controlloCampi(){
    var codice = form1.codice.value;
    var valore = form1.valore.value;
    if (codice != "" ^ valore > 0){

    in in pratica se il campo codice è pieno il valore deve essere maggiore di zero e non vuoto
    se il campo codice è vuoto il campo valore deve essere 0


  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    L'esempio che ho postato mi pare faccia proprio ciò che stai chiedendo.
    Lo hai provato?
    Cosa non ti torna?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    @KillerWorm

    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Se devi eseguire un controllo generico sui due valori presi assieme, puoi usare l'operatore ^ (XOR) che copre tutte le casistiche da te indicate, secondo questa tabella della verità:
    Piccola nota di metodo: esattamente come normalmente usiamo il doppio && oppure il doppio || nelle comparazioni booleane (invece dei singoli & e |), così, sempre quando abbiamo a che fare con booleani e non con numeri, scriveremo l'operatore XOR con !== piuttosto che con ^ – il quale altrimenti, esattamente come & e |, convertirebbe i booleani in valori numerici che poi verrebbero nuovamente convertiti in booleani negli if statements). Per capirci leverò lo XOR bit per bit dal tuo if e inserirò lo XOR booleano…

    codice:
    if ((codice !== "") !== (valore > 0)){

    o, levando le parentesi (che è lo stesso)…:

    codice:
    if (codice !== "" !== valore > 0){

    Insomma, io farei così:

    codice:
    function controlloCampi(){
        var codice = form1.codice.value;
        var valore = parseFloat(form1.valore.value);
    
        if (isNaN(valore)) { 
            alert("Il campo \"valore\" dev\'essere di tipo numerico");
            return;
        }
    
        if ((valore === 0) !== (codice.length === 0)) {
            alert("errore");
        } else {
            alert("tutto ok");
        }
    }

    Giusto per la cronaca… esisterebbe anche quest'altra soluzione per quell'if

    codice:
    function controlloCampi(){
        var codice = form1.codice.value;
        var valore = parseFloat(form1.valore.value);
    
        if (isNaN(valore)) { 
            alert("Il campo \"valore\" dev\'essere di tipo numerico");
            return;
        }
    
        if (codice.length === 0 ? valore > 0 : valore === 0) {
            alert("errore");
        } else {
            alert("tutto ok");
        }
    }

    Tutto ciò che fai con jQuery puoi farlo meglio e con la metà del codice in puro JavaScript.

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    @KillerWorm
    ...
    scriveremo l'operatore XOR con !== piuttosto che con ^ – il quale altrimenti, esattamente come & e |, convertirebbe i booleani in valori numerici che poi verrebbero nuovamente convertiti in booleani negli if statements). Per capirci leverò lo XOR bit per bit dal tuo if e inserirò lo XOR booleano…
    Giusto, grazie per la puntualizzazione.
    In effetti è più efficiente l'operatore logico. A livello di prestazioni, in media si risparmia qualcosa nell'ordine del millesimo di secondo a singola operazione (giusto per la cronaca, senza sarcasmo).
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

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.