Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    214

    Input controllato per avere un intero

    Con questo codice vorrei realizzare un input controllato con prompt() per ottenere un numero intero, ma ottengo il controllo di solo due input errati.
    Desidererei sapere come ottenere il controllo di più input errati. Grazie

    lanvoel

    codice:
    <!DOCTYPE html>
    <html>
    <head>
    <script language=JavaScript>
       function riscrivi()
       {
       intero=prompt("scrivi un numero intero ", 6);
       }
    </script>
    </head>
    <body>
    <script language=JavaScript>
    var intero
    intero=prompt("scrivi un numero intero ", 6);
       if (isNaN(intero))
       {
       riscrivi();
       }
    numero=parseInt(intero);
    document.write("numero intero: " + numero);
    </script>
    </body>
    </html>

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,691
    Ciao, la chiamata del prompt, riportata due volte in modo uguale, crea un codice ridondante. Sostanzialmente potresti mettere tutto dentro un'unica funzione, cioè la chiamata del prompt e la condizione. A quel punto puoi richiamare, all'avvio, una prima volta la funzione, in modo che parta subito il prompt, ed eventualmente richiamarla anche da dentro la condizione (che è comunque dentro la funzione stessa); in sostanza sarà una funzione che chiama se stessa.

    Fai qualche prova.




    PS: ricorda sempre che sarebbe opportuno validare il codice anche se si tratta di un semplice esercizio/esempio. In <head> manca il <title>; e l'attributo language=JavaScript puoi fare a meno di specificarlo, dal momento che per HTML5 quello è il valore di default.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    214
    Grazie KillerWorm.
    Ho riscritto il codice secondo il tuo suggerimento, ma si possono fare solo 2 tentativi di input: il primo input non viene accettato, né corretto, né errato, e il secondo input è accettato, sia corretto, sia errato.

    lanvoel

    codice:
    <!DOCTYPE html>
    <html>
    <head>
    <title>input controllato di prompt()</title>
    <script>
    var intero;
       function scriviIntero()
       {
       intero=prompt("scrivi un numero intero ", 6);
       }
          if (isNaN(intero))
          {
          scriviIntero();
          }
    </script>
    </head>
    <body>
    <script>
       scriviIntero();
       numero=parseInt(intero);
       document.write("numero intero: " + numero);
    </script>
    </body>
    </html>

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,691
    Anche la condizione deve stare dentro la funzione, come ti ho indicato:
    Sostanzialmente potresti mettere tutto dentro un'unica funzione, cioè la chiamata del prompt e la condizione
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    214
    Grazie ancora KillerWorm.
    E' bastato spostare la chiusura della funzione dopo la condizione, per includerla.

    lanvoel

    codice:
    <!DOCTYPE html>
    <html>
    <head>
    <title>input controllato di prompt()</title>
    <script>
    var intero;
       function scriviIntero()
       {
       intero=prompt("scrivi un numero intero ", 6);
          if (isNaN(intero))
          {
          scriviIntero();
          }
       }
    </script>
    </head>
    <body>
    <script>
       scriviIntero();
       numero=parseInt(intero);
       document.write("numero intero: " + numero);
    </script>
    </body>
    </html>

  6. #6
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    590
    prova questo codice se fà al caso tuo ...
    E' codice di mia mano non di terzi...
    codice:
    <!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">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Documento senza titolo</title>
    <script language="javascript" type="text/javascript">
    function numbersonly(myfield, e, dec) {
      var key;
      var keychar;
      if (window.event)
        key = window.event.keyCode;
      else if (e)
        key = e.which;
      else
        return true;
      keychar = String.fromCharCode(key);
      // control keys
      if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
        return true;
      // numbers
      else if ((("0123456789,").indexOf(keychar) > -1))
        return true;
      // decimal point jump
      else if (dec && (keychar == ",")) {
        myfield.form.elements[dec].focus();
        return true;
      } else
        return false;
    }
    function alfanumonly(myfield, e, dec) {
      var key;
      var keychar;
      if (window.event)
        key = window.event.keyCode;
      else if (e)
        key = e.which;
      else
        return true;
      keychar = String.fromCharCode(key);
      // control keys
      if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
        return true;
      // numbers
      else if ((("0123456789,abcdefghilmnopqrstuvzwxykjABCDEFGHILMNOPQRSTUVZWXYKJ@#.:;").indexOf(keychar) > -1))
        return true;
      // decimal point jump
      else if (dec && (keychar == ",")) {
        myfield.form.elements[dec].focus();
        return true;
      } else
        return false;
    }
    function VisualizzaInput(valore) {
     alert("Hai digitato " + valore);
    }
    </script>
    </head>
    <body>
    <p>Programma di esempio per avere un input controllato a monte dell'input utente su un form web </p>
    <p>La verifica del campo non &egrave; piu necessaria in quanto il campo di input permette l'inserimento di soli caratteri consentiti</p>
    <p>&nbsp;</p>
    <p>1) Caso numerico: il campo accetta numeri e la virgola</p>
    <p>INPUT NUMERICO 
      <input type="text" name="camponumerico" id="camponumerico" maxlength="15" size="20" value="" style="text-align:right;" 
     title="campo numerico..." onKeyPress="return numbersonly(this, event)" />
    &nbsp;<input type="button" onclick="VisualizzaInput(camponumerico.value)" value=" verifica " /></p>
    <p>2) Caso alfanumerico: il campo accetta i caratteri alfanumerici e alcuni caratteri speciali da una tabella predisposta</p>
    <p>  &quot;0123456789,abcdefghilmnopqrstuvzwxykjABCDEFGHILMNOPQRSTUVZWXYKJ@#.:;&quot;  </p>
    <p>INPUT ALFANUMERICO
      <input type="text" name="campoalfanum" id="campoalfanum" value="" maxlength="50" size="50" style="text-align:left;" 
     title="campo numerico..." onkeypress="return alfanumonly(this, event)" /> 
     &nbsp;<input type="button" onclick="VisualizzaInput(campoalfanum.value)" value=" verifica " /></p>
     &euro;
     </body>
    </html>
    Vic53

  7. #7
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    590
    Chiaramente se vuoi solo interi togli la virgola dal vettore memorizzato nella funzione
    ciao
    Vic53

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    214
    Grazie vic53.
    Mi sarà sicuramente utile il tuo codice per altre applicazioni.
    Per il controllo dei numeri interi va bene il codice che ho scritto con la correzione di KillerWorm.
    Un saluto

    lanvoel

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