Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    11

    Live Validator + altri JS: caccia ai miei (tanti?) errori

    Salve a tutti,
    mi rivolgo per un consiglio a chi nel JS ci sguazza per davvero, visto che io non lo conosco quasi per niente: solo 5 giorni fa ho dovuto imparare qualcosina per validare (anche) lato client un form di reportistica piuttosto complesso.

    Ho scelto il bel Live Validator(vedi articolo di C.Lamanna su html.it) e l'ho integrato con altri piccoli script (cosine per impedire la pressione accidentale del tasto ENTER o per portare tutto in maiuscolo).

    Nel form alcuni campi (giustamente) appaiono solo scegliendo certe opzioni di select, e per crearli ho scelto di usare inner.html (sento dei borbottii... )

    Il problema: questi campi sembrano scavallare allegramente Live Validator.

    La colpa e' sicuramente mia, che da principiante pasticcio e mischio gli script: faccio prima a mostrarvi una versione abbreviata e semplificata del form, con codice, js, css e ammazzacaffé, dove la falla è spiegata in rosso, in basso. Eccola qui:

    FORM TEST


    Magari il codice fa un po' disperare nel suo disordine apparente, ma qualsiasi critica e consiglio sono i benvenuti: vi ringrazio in anticipo!
    Ciauz,


    Marco - Panamon Rn+

    panamon23082 <LUM4CA> yahoo <PUNT0> it

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    11
    Allora, aggiornamento: il mio amico Kanta che ne sa parecchio più di me suggerisce che:

    ...quando usi queste funzioni:

    function makeBox() {
    var a = " Che regali? <input type = 'text' name='dettagliregali' id='dettagliregali' size='42' maxlength='75' onChange='javascript:this.value=this.value.toUpper Case();' onkeypress='return handleEnter(dettagliregali, event);' value=''><div id='tnote'>Es. Ad esempio, ovetti, frittatine, preparati per sughi pronti - Per aggiungere altri dettagli usa le Note sotto</div>"
    if (document.getElementById("regali").value=="si") {
    document.getElementById("inputBox").innerHTML = a;
    var dettagliregali= new LiveValidation('dettagliregali',{ validMessage: "ok" });
    dettagliregali.add(Validate.Presence, { failureMessage: "Da compilare" });
    dettagliregali.add(Validate.Length, { maximum: 70} );
    }
    else {
    document.getElementById("inputBox").innerHTML = "";
    }
    }


    Dove tu, nel caso uno risponda SI proponi un nuovo campo da compilare quando vai a fare il controllo ti stai avvalendo di questo

    var dettagliregali= new LiveValidation('dettagliregali',{ validMessage: "ok" });

    Ma questo oggetto che crei con NEW non è il validatore di tutta la form , ovvero tu hai generato un validator solo per quel campo e ovviamente nel momento in cui tu premi no lui mette ok e da come return che tutta la form è validata!

    La soluzione sta nel portare tutti i campi nel validatore principale e non crearne dei nuovi!
    Pero' anche gli altri campi sono validati tramite var nome_id= new LiveValidation('nome_id',{ecc... quindi non capisco perché gli altri sono giustamente richiesti mentre quello nestato nell'inner.html riesca a scavallare tutto... Kanta, sono io che non ho capito? Aiuto!

    Panamon Rn+
    Panamon Rn+

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    11
    Altra idea del Kanta, che aggiorno anche qui:

    <code>

    Al posto della inner che scrive il codice nella pagina live metti il campo già presente ma dentro una <div style=”visibility: hidden” ovvero metti il campo hidden e lo fai apparire solo e soltanto se uno sceglie la voce desiderata utilizzando l’attributo style.visibility = 'visible'

    Una roba del tipo


    function cam1() {
    if (a == “si”) { // DOM3 = IE5, NS6
    document.getElementById('quelchele').style.visibil ity = 'visible';
    }
    Else
    {
    document.getElementById('quelchele').style.visibil ity = 'hidden';
    }

    così elimini la faccenda innerhtml

    </code>
    Che ne pensate?
    Mi pare strano che nessuno abbia ancora detto nulla, nemmeno un "questo, questo e quello sono sbagliati perche' ecc.": non penso proprio di aver scritto il form perfetto!

    Grazie ciao,



    Marco - Panamon Rn+

    panamon23082 <LUM4CA> yahoo <PUNT0> it
    Panamon Rn+

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    11
    Ho rimosso il link al form temporaneo di test e adottato la soluzione del buon Kanta, che ringrazio di nuovo: elimina l'inner.html e funziona.
    Ciao,

    Panamon
    Panamon Rn+

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.