Visualizzazione dei risultati da 1 a 9 su 9

Discussione: cicli

  1. #1
    Utente di HTML.it L'avatar di Ashry
    Registrato dal
    Jul 2002
    Messaggi
    586

    cicli

    Salve a tutti avrei bisogno di effettuare un controllo su 32 campi e vorrei sapere se esiste un mdo per fare un ciglo per non dover ripetere la stessa istruzione 32 volte.

    vorrei fare una cosa tipo

    for (i=0; i <= 32; i++) {
    if(ValidaNum(document.strutture.qta_[i].value)== false){
    alert("Attenzione inserire solo numeri");
    return;
    }

    ma non so se si può fare e se la sintassi che si deve usare ne caso si possa.

    potreste aiutarmi?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    ValidaNum(document.strutture.elements["qta_" + i].value
    attenzione che stai facendo 33 cicli con il for che hai scritto

  3. #3
    Utente di HTML.it L'avatar di Ashry
    Registrato dal
    Jul 2002
    Messaggi
    586
    non funziona, ho provato a fare anche così ma mi dice di iserire solo numeri anche se inserisco dei numeri

    {
    dato1 = document.strutture.qta_1.value;
    dato2 = document.strutture.qta_2.value;
    dato3 = document.strutture.qta_3.value;
    dato4 = document.strutture.qta_4.value;
    dato5 = document.strutture.qta_5.value;
    dato6 = document.strutture.qta_6.value;
    dato7 = document.strutture.qta_7.value;
    dato8 = document.strutture.qta_8.value;
    dato9 = document.strutture.qta_9.value;
    dato10 = document.strutture.qta_10.value;
    dato11 = document.strutture.qta_11.value;
    dato12 = document.strutture.qta_12.value;
    dato13 = document.strutture.qta_13.value;
    dato14 = document.strutture.qta_14.value;
    dato15 = document.strutture.qta_15.value;
    dato16 = document.strutture.qta_16.value;
    dato17 = document.strutture.qta_17.value;
    dato18 = document.strutture.qta_18.value;
    dato19 = document.strutture.qta_19.value;
    dato20 = document.strutture.qta_20.value;
    dato21 = document.strutture.qta_21.value;
    dato22 = document.strutture.qta_22.value;
    dato23 = document.strutture.qta_23.value;
    dato24 = document.strutture.qta_24.value;
    dato25 = document.strutture.qta_25.value;
    dato26 = document.strutture.qta_26.value;
    dato27 = document.strutture.qta_27.value;
    dato28 = document.strutture.qta_28.value;
    dato29 = document.strutture.qta_29.value;
    dato30 = document.strutture.qta_30.value;
    dato31 = document.strutture.qta_31.value;
    dato32 = document.strutture.qta_32.value;

    //controllo che tutti i campi siano numerici

    for (i=1; i < 32; i++) {
    if(ValidaNum(["dato" + i] == false)){
    alert("Attenzione inserire solo numeri");
    return;
    }
    }

    un'altra domanda
    se non faccio il ciclo la parentesi va chiusa perima dell' == false, perchè nel ciclo la metti dopo?

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    hai sbagliato una parentesi
    codice:
    for (i=1; i <= 32; i++) {
      if (!ValidaNum(["dato" + i])){
        alert("Attenzione inserire solo numeri");
        return;
      }
    }

  5. #5
    Utente di HTML.it L'avatar di Ashry
    Registrato dal
    Jul 2002
    Messaggi
    586
    se uso ["dato"+i] è come se non passassi nulla a ValidaNum mentre con
    for (i=1; i <= 32; i++) {
    if (!ValidaNum(document.strutture.elements["qta_" + i].value)){
    alert("Attenzione inserire solo numeri");
    return;
    }
    }

    mi compare un messaggio che mi chiede se voglio fermare lo script


  6. #6
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    posta il codice di ValidaNum

  7. #7
    Utente di HTML.it L'avatar di Ashry
    Registrato dal
    Jul 2002
    Messaggi
    586
    premetto che non l'ho scritto io ^-^

    function ValidaNum(checkStr)
    {
    if (checkStr=="")
    return(true)

    var carrattere="";
    var vannobene = "0123456789";
    var bolAposto = true;
    var bolTrovato = false;

    for (i = 0; i < checkStr.length; i++)
    {
    carattere = checkStr.charAt(i);
    bolTrovato = false;

    for (j = 0; j < vannobene.length; j++)
    {
    if (carattere == vannobene.charAt(j))
    {
    bolTrovato = true;
    break;
    }
    }

    if (!bolTrovato )
    {
    bolAposto = false;
    break;
    }
    }

    if (!bolAposto )
    {
    return (false);
    }
    return (true);
    }

  8. #8
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    cominciamo con sostituire la funzione con questa
    function ValidaNum(value) {
    return /^\d*$/.test(value);
    }
    valida le stringhe che contengono caratteri 0-9 di qualunque lunghezza (compreso "")

  9. #9
    Utente di HTML.it L'avatar di Ashry
    Registrato dal
    Jul 2002
    Messaggi
    586
    sei un mito ora funziona benissimo

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.