Visualizzazione dei risultati da 1 a 5 su 5

Visualizzazione discussione

  1. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Grazie per la risposta, non capisco solo il tuo tono livemente polemico, ma sicuramente mi sto sbagliando...
    Figurati, hai ragione, scusa il tono polemico, chiaramente nulla di personale, solo (come già detto) mi irritano i giochetti che limitano le normali funzionalità del mio browser; certo, poi capisco che il tuo intento resta solo quello di impedire l'inserimento di possibili valori anomali.

    Sì, anche a me non piacciono quei "trucchi da baraccone" come li chiami tu, infatti vorrei adottare una soluzione più pulita.
    Giusto

    Col tuo codice l'utente quando scrive 0, gli viene corretto in 1 e questa cosa non mi piace.
    Giusto anche questo.

    Così come ti sembra?
    [...]
    Ti direi che non può andare bene; giusto qualche osservazione:

    1 - nella condizione (this.value <= '0') basterebbe l'operatore di uguaglianza (this.value == '0') dal momento che non è possibile che ci sia il segno meno (perché verrebbe rimosso eventualmente nella riga antecedente). Questo è giusto a livello concettuale, perché il funzionamento, usando l'uno o l'altro operatore, sarebbe identico in questo contesto. E' una questione pressoché irrilevante.

    2 - se si esegue un copiaincolla in cui sono presenti uno o più zeri iniziali (seguiti da altre cifre numeriche) o addirittura due o più zeri (senza nessun altra cifra numerica), il valore non viene corretto, restano gli zeri. Nel primo caso (ad esempio, se scrivo 0123) a livello matematico potrebbe essere accettabile (perché equivale al valore 123) ma, nel secondo caso (ad esempio, se scrivo 0000) questo resta invariato (per cui equivale al valore 0). E' una questione che compromette il risultato.

    In tal senso direi che la soluzione non soddisfa la tua richiesta.

    Nello script che ti ho proposto, il metodo Math.max ha la duplice funzione di convertire il valore "testuale" (prelevato dal campo) in valore numerico, oltre che fissare il limite minimo. Per tale motivo anche copiaincollando dei valori con degli 0 iniziali, questi vengono sempre convertiti.

    In conclusione, impostando a dovere l'espressione regolare è possibile rimuovere eventuali zeri iniziali e risolvere come da tue esigenze.
    Qui una soluzione:
    codice:
    <!DOCTYPE HTML>
    <html lang="it">
       <head>
          <title>Esempio</title>
          <meta charset="utf-8">
       </head>
       <body>
          <input type="text" name="km" class="form-control" id="km" placeholder="Digita i chilometri" required>
          <script>
             document.getElementById('km').addEventListener('input', function(){
                this.value = this.value.replace(/(?:^\D*0+)|\D/g,''); // Ripulisco il valore rimuovendo qualsiasi 0 iniziale e qualsiasi cifra non numerica
             });
          </script>
       </body>
    </html>
    Ultima modifica di KillerWorm; 16-04-2019 a 17:05 Motivo: corretto lo script
    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.