Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187

    [Javascript] Problema onKeyUp e OnSubmit

    Ciao a tutti,
    premetto che non sono molto pratica con javascript...
    Io ho queste due funzioni:

    codice:
    <script language="JavaScript" type="text/javascript">
    <!--
    function controllaPrezzo() {
         var testoNumerico1 = document.inserisci.prezzo.value;
         if(isNaN(testoNumerico1)) {
            alert("Inserire solo valori numerici senza il simbolo dell'euro, grazie!");
            document.inserisci.prezzo.value = "";
            document.inserisci.prezzo.focus();
         }
    //-->
    </script>	 
    <script  language="JavaScript" type="text/JavaScript">
    <!-- 
    	
    //Check se il form di invio è correttamente riempito
    function checkforinfo () { 
    
    	var errorMsg = "";
    
    	if (document.inserisci.prezzo.value == ""){
    		errorMsg += "\n\t\tPrezzo del prodotto \t\t- Digita il prezzo del prodotto!";
    	}
    
    	
    	//Se ci sono problemi nei form, visualizza un messaggio di errore
    	if (errorMsg != ""){
    		msg = "______________________________________________________________\n\n";
    		msg += "Attenzione! L'invio dei dati al Db è stato interrotto.\n";
    		msg += "Si prega di compilare tutti i campi obbligatori.\n";
    		msg += "______________________________________________________________\n\n";
    		msg += "Devi riempire i seguenti campi: \n";
    		
    		errorMsg += alert(msg + errorMsg + "\n\n");
    		return false;
    	}
    return true;
    }
    // -->
    </script>
    La prima la richiamo nel campo testo prezzo tramite onKeyUp la seconda sta nell'onSubmit del form, il problema è che la prima non funziona non dà errore ma neanche fa il controllo è possibile che sia un'imcompatibilità tra le due funzioni?
    C'è un modo per unire le due cose?

    Ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    285
    prova a cambiare questo pezzo così:

    var testoNumerico1 = parseFloat(document.inserisci.prezzo.value);

    secondo me nn ti porta NaN se non lo "converti" in un numerico

  3. #3
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187
    Niente da fare continua ad ignorarlo...

  4. #4
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187
    Allora sto cercando di modificare lo script... senza grandi risultati!
    In pratica devo controllare che nel campo prezzo siano inseriti valori NON numerici, ma che accetti anche i decimali, quindi deve accettare 200,20 - 200 / 200,00, questo è lo script:

    codice:
    <script type="text/javascript">
    function controllaPrezzo() {
       campo2 = document.getElementById('prezzo').value;
       if (!(campo2.match(/(\d+),(\d{2})/))) || ((isNaN(campo2))) {
       alert("Devi inserire un importo valido")
       return false;
       }
    }
    </script>
    Ma non funziona... dove sbaglio? :master: la prima dice che devono esserci i decimali dopo la virgola la seconda che sia numerico... una curiosità e se l'utente ha le impostazioni internazionali e quindi usa il punto per dividere la cifra?

    Nadia

  5. #5
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    secondo me basta che tu controlli la prima condizione


    codice:
    || ((isNaN(campo2))
    
    
    non serve

    Tra l'altro modificherei anche l'espressione regolare in questo modo:


    codice:
     if (!(campo2.match(/(\d+)(,(\d{2}))?/)))
    Così non sei obbligata a specificare sempre due decimali

    Vuoi aiutare la riforestazione responsabile?

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

  6. #6
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187
    Ciao e grazie tante!

  7. #7
    Utente di HTML.it L'avatar di nadia79
    Registrato dal
    Aug 2005
    Messaggi
    187
    Uhmm non funziona del tutto... se inserisco solo lettere funziona bene però se inserisco valori misti (es ad32xsad) non dà errore!

    Come può essere? :master:

  8. #8
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    tu vuoi che sia valido un numero che abbia eventualemente 2 decimali, giusto? (tipo 20 oppure 562.88, uso il . come simbolo del decimale)

    l'espressione regolare è

    /^\d+(\.\d{2})?$/


    quindi


    codice:
    <script type="text/javascript">
    function controllaPrezzo() {
       campo2 = document.getElementById('prezzo').value;
       if (!(campo2.match(/^\d+(\.\d{2})?$/))) {
       alert("Devi inserire un importo valido")
       return false;
       }
    }
    </script>
    Altrimenti se ti serve un altro tipo di controllo fammi sapere

    Vuoi aiutare la riforestazione responsabile?

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

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.