Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Help debug javascript

  1. #1

    Help debug javascript

    Ciao ragazzi non capisco cosa c'è che non va in questo script che risiede in una funzione che viene richiamata dall'evento onSubmit.


    codice:
    if (parseInt(document.InsertProd.prod_sct_qty_active.value,10) > 0 && parseInt(document.InsertProd.prod_sct_qty_value.value,10) == 1) && (parseFloat(replaceString(",",".",document.InsertProd.prod_prz_1.value)) == 0 || parseInt(document.InsertProd.prod_qty_1.value,10) == 0){
    alert("ATTENZIONE! Impossibile attivare lo sconto per quantità fascia 1,\nse tale fascia contiene valori zero.")
                document.InsertProd.prod_qty_1.focus();
    						eval("document.InsertProd.prod_qty_1.style.backgroundColor='#FFFF00'");
    						eval("document.InsertProd.prod_prz_1.style.backgroundColor='#FFFF00'");
                return false}

    Quando alla finestra alert errore decido di avviare il debug, l'ambiente di sviluppo M. (che non so usare) mi segnala l'errore sul secondo operatore logico and (&&).


    Attendo un vostro suggerimento.
    Grazie!

    Aikon

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    709
    prova a sostituire
    codice:
    parseFloat(replaceString(",",".",document.InsertProd.prod_prz_1.value)
    con
    codice:
    parseFloat(document.InsertProd.prod_prz_1.value.replace("\,","\."))

  3. #3
    Niente da fare secan, stesso errore stesso punto di segnalazione.


    Aikon

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    709
    Forse ho trovato l'errore: ci sono due parentesi tonde di troppo (quelle che ho segnato in rosso):
    codice:
    if (parseInt(document.InsertProd.prod_sct_qty_active.value,10) > 0 && parseInt(document.InsertProd.prod_sct_qty_value.value,10) == 1) && (parseFloat(replaceString(",",".",document.InsertProd.prod_prz_1.value)) == 0 || parseInt(document.InsertProd.prod_qty_1.value,10) == 0)
    Eliminale e tutto dovrebbe funzionare, in caso contrario prova anche ad inserire la modifica che ti ho postato prima:
    codice:
    if (parseInt(document.InsertProd.prod_sct_qty_active.value,10) > 0 && parseInt(document.InsertProd.prod_sct_qty_value.value,10) == 1 && parseFloat(document.InsertProd.prod_prz_1.value.replace("\,","\.")) == 0 || parseInt(document.InsertProd.prod_qty_1.value,10) == 0)

  5. #5
    Allora secan adesso non mi da + l'errore, ma non fa quello che dovrebbe....ti spiego:

    Io ho in questo form:
    codice:
    <TD class="barra">
      Sconto quantità attivo 
    </TD>
    <TD class="in_box">
      SI
      <input type="radio" name="prod_sct_qty_active" value="1">
      NO
      <input type="radio" name="prod_sct_qty_active" value="0" checked>
    </TD>
    <TD class="barra">
    Fascie sconto 
    </TD>
    <TD class="in_box">
      1
      <input type="radio" name="prod_sct_qty_value" value="1" checked>
      2
      <input type="radio" name="prod_sct_qty_value" value="2">
    </TD>
    <TD class="barra">
      Quantità fascia 1 
    </TD>
    <TD class="in_box">
      <input type="text" name="prod_qty_1" size="10" value="0">
    </TD>
    <TD class="barra">
      Prezzo fascia 1 
    </TD>
    <TD class="in_box">
      <input type="text" name="prod_prz_1" size="10" value="0">
    </TD>
    In pratica se il valore del radio prod_sct_qty_active è 1 (quindi si) e il radio prod_sct_qty_value è impostata su valore 1, lo script deve verificare che i campi prod_qty_1 e (AND) prod_prz_1 non abbiano valore zero.

    Spero di essere stato abbastanza chiaro, comunque grazie per il tuo interessamento.


    Aikon

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    709
    Mmm... prova così:
    codice:
    var f=document.forms['InsertProd'];
    var r1=f.elements['prod_sct_qty_active'];
    var r2=f.elements['prod_sct_qty_value'];
    var t1=f.elements['prod_qty_1'];
    var t1=f.elements['prod_prz_1'];
    if (r1[0].checked && r2[0].checked) {
      if (parseInt(t1.value,10)<=0) {
        window.alert("Il campo "+t1.name+" deve essere maggiore di 0");
        t1.focus();
      }
      if (parseFloat(t2.value.replace("\,","\."))<=0) {
        window.alert("Il campo "+t2.name+" deve essere maggiore di 0");
        t2.focus();
      }
    }

  7. #7
    Grazie secan ha funzionato!


    Aikon

  8. #8
    Ciao secan ti disturbo ancora sempre in merito al form che sto lavorando.

    Adesso devo verificare che all'attivazione dell'opzione radio su si (1) si vada a verificare se in una select è selezionata l'opzione diversa da zero.

    Questa la parte di form:

    codice:
    <TD class="barra">
      Attivare tassa? 
    </TD>
    <TD class="in_box">
      SI
      <input type="radio" name="prod_t_active" value="1">
      NO
      <input type="radio" name="prod_t_active" value="0" checked>
    </TD>
    <TD class="in_box">
    <Select name="prod_t_value_id">
    <option value="0">Selezionare</option>
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    </Select>
    </TD>

    Io ho provato in questo modo ma mi da errore:

    codice:
    if (document.InsertProd.prod_t_active[0].checked) {
    if (parseIn(document.InsertProd.prod_t_value_id.SelectedIndex.value,10)<=0) {
       window.alert("Attenzione si è deciso di attivare la tassa,\nper cui bisogna selezionare la tipologia!");
     document.InsertProd.prod_t_value_id.focus();
    eval("document.InsertProd.prod_t_value_id.backgroundColor='#FFFF00'");
    return false
     }
    }

    Grazie ancora secan!!


    Aikon

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    709
    Ciao TheAikon, scusa se ti rispondo soltanto adesso ma oggi sono impegnatissimo e fino ad ora non avevo controllato il forum. Per venire al tuo problema, prova a fare così:
    codice:
    if (document.InsertProd.prod_t_active[0].checked) {
      if (document.InsertProd.prod_t_value_id.options[0].selected) {
        window.alert("Attenzione si è deciso di attivare la tassa,\nper cui bisogna selezionare la tipologia!");
        document.InsertProd.prod_t_value_id.focus();
      }
    }
    Questo per quanto riguarda il controllo.
    Per quanto riguarda la funzione eval(), non so bene cosa faccia (non l'ho mai usata) ma so che il suo utilizzo è deprecato perciò sarebbe meglio trovare un'alternativa.

    Ora ti saluto e mi reimmergo nel lavoro (sigh!)

    Secan

  10. #10
    Grazie ancora Secan...e buon lavoro



    Aikon

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.