Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Div, form e riferimenti

    Salve,

    ho un piccolo grande problema; ho collocato all'interno di un DIV un form con alcuni campi; il problema è che ho scritto una piccola funzione per controllare che, all'atto dell'invio del form, i campi non siano vuoti. Il problema sorge in quanto non riesco a comprendere come far riferimento agli elementi del form per controllare che la proprietà value sia non vuota. Ho fatto delle prove cercando di ottenere il valore presente nel campo, ma nulla di fatto.....Ringrazio anticipatamente tutti coloro che vorranno darmi indicazioni. Di seguito riporto il codice.


    <div id="Div1">
    <script type="text/javascript">
    function controlla(){
    alert(document.getElementById('frmref').nominativo .value);
    }
    </script>
    <form name="frm_ref" id="frmref" method="post" onsubmit="controlla()">
    <table width="400" border="0" cellspacing="0" cellpadding="0" class="testo_norm">
    <tr>
    <td width="80">Titolo:</td>
    <td width="320">
    <select name="titolo" class="testo_norm">
    <option value="1" selected>Sig.</option>
    <option value="2">Sig.ra</option>
    </select>
    </td>
    </tr>
    <tr>
    <td width="80">Nominativo:</td>
    <td width="320">
    <input type="text" name="nominativo" size="50" maxlength="60" class="testo_norm" value="">
    </td>
    </tr>
    <tr>
    <td width="80"></td>
    <td width="320" align="right" valign="middle">
    <input type="submit" name="Submit" value="Registra" class="testo_norm">
    </td>
    </tr>
    <tr>
    <td width="80"></td>
    <td width="320"></td>
    </tr>
    </table>
    </form>

  2. #2
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697

    Re: Div, form e riferimenti

    Originariamente inviato da Roberto Phis
    Salve,

    ho un piccolo grande problema; ho collocato all'interno di un DIV un form con alcuni campi; il problema è che ho scritto una piccola funzione per controllare che, all'atto dell'invio del form, i campi non siano vuoti. Il problema sorge in quanto non riesco a comprendere come far riferimento agli elementi del form per controllare che la proprietà value sia non vuota. Ho fatto delle prove cercando di ottenere il valore presente nel campo, ma nulla di fatto.....Ringrazio anticipatamente tutti coloro che vorranno darmi indicazioni. Di seguito riporto il codice.


    <div id="Div1">
    <script type="text/javascript">
    function controlla(){
    alert(document.getElementById('frmref').nominativo .value);
    }
    </script>
    <form name="frmref" id="frmref" method="post" onsubmit="controlla()">
    <table width="400" border="0" cellspacing="0" cellpadding="0" class="testo_norm">
    <tr>
    <td width="80">Titolo:</td>
    <td width="320">
    <select name="titolo" class="testo_norm">
    <option value="1" selected>Sig.</option>
    <option value="2">Sig.ra</option>
    </select>
    </td>
    </tr>
    <tr>
    <td width="80">Nominativo:</td>
    <td width="320">
    <input type="text" name="nominativo" size="50" maxlength="60" class="testo_norm" value="">
    </td>
    </tr>
    <tr>
    <td width="80"></td>
    <td width="320" align="right" valign="middle">
    <input type="submit" name="Submit" value="Registra" class="testo_norm">
    </td>
    </tr>
    <tr>
    <td width="80"></td>
    <td width="320"></td>
    </tr>
    </table>
    </form>
    Provalo così ho modificato solo per l'item "Nominativo"

    function controlla(){
    var f = document.frmref;
    //.value == "" rende il campo obbligatorio
    //.charAt(0) == " " non permette la barra spaziatrice come primo carattere
    if(f.nominativo.value == "" || f.nominativo.value.charAt(0) == " "){
    f.nominativo.style.backgroundColor='#e2e2e2'
    alert("Inserire il Nominativo");
    f.nominativo.focus();
    return false;
    }
    <form name="frmref" id="frmref" method="post" onsubmit="controlla()">
    <table width="400" border="0" cellspacing="0" cellpadding="0" class="testo_norm">
    <tr>
    <td width="80">Titolo:</td>
    <td width="320">
    <select name="titolo" class="testo_norm">
    <option value="1" selected>Sig.</option>
    <option value="2">Sig.ra</option>
    </select>
    </td>
    </tr>
    <tr>
    <td width="80">Nominativo:</td>
    <td width="320">
    <input type="text" name="nominativo" size="50" maxlength="60" class="testo_norm" value="">
    </td>
    </tr>
    <tr>
    <td width="80"></td>
    <td width="320" align="right" valign="middle">
    <input type="submit" name="Submit" value="Registra" class="testo_norm">
    </td>
    </tr>
    <tr>
    <td width="80"></td>
    <td width="320"></td>
    </tr>
    </table>
    </form>

  3. #3
    Salve,

    innanzitutto ti ringrazio per il tuo interessamento e per la risposta.
    Purtroppo il problema è più complesso di quanto mi aspettassi inizialmente. Mi spiego: credo che il problema nasca dalll'utilizzo del form all'interno di un generatore di finestre di popup opensource molto carino, OpenPopUps (http://www.openwebware.com), che funziona benissimo per finestre a contenuto statico. Per esigenze di sviluppo, avevo pensato di inserirvi dentro un form per l'immissione di dati secondari. Il problema nasce dal fatto che non riesco a leggere i valori dei campi con funzioni javascript come quella che gentilmente mi postavi.
    In realtà ho provato anche ad assegnare un id a ciascun campo per poi leggerne il valore attraverso la sintassi document.getElementById('nome_campo').value; il tutto funziona perfettamente se il form è inserito nella pagina html ma non se inserito nel DIV richiesto per far funzionare la finestra.
    Ritengo che il problema nasca dal fatto che la finestra di popup viene "costruita" attraverso codice javascript che rimescola in un qualche modo le carte ma, essendo poco pratico di javascript, mi sfugge il perchè (anche dopo un primo esame del codice che permette di generare la finestra). Da neofita, pensavo banalmente di poter ottenere i valori (a me necessari) attraverso i metodi sopra descritti, ma non è così.
    Se interessa potrei riportare il codice completo sia della pagina html sia del generatore di popup per porlo all'attenzione. Grazie.

  4. #4
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Originariamente inviato da Roberto Phis
    Salve,

    innanzitutto ti ringrazio per il tuo interessamento e per la risposta.
    Purtroppo il problema è più complesso di quanto mi aspettassi inizialmente. Mi spiego: credo che il problema nasca dalll'utilizzo del form all'interno di un generatore di finestre di popup opensource molto carino, OpenPopUps (http://www.openwebware.com), che funziona benissimo per finestre a contenuto statico. Per esigenze di sviluppo, avevo pensato di inserirvi dentro un form per l'immissione di dati secondari. Il problema nasce dal fatto che non riesco a leggere i valori dei campi con funzioni javascript come quella che gentilmente mi postavi.
    In realtà ho provato anche ad assegnare un id a ciascun campo per poi leggerne il valore attraverso la sintassi document.getElementById('nome_campo').value; il tutto funziona perfettamente se il form è inserito nella pagina html ma non se inserito nel DIV richiesto per far funzionare la finestra.
    Ritengo che il problema nasca dal fatto che la finestra di popup viene "costruita" attraverso codice javascript che rimescola in un qualche modo le carte ma, essendo poco pratico di javascript, mi sfugge il perchè (anche dopo un primo esame del codice che permette di generare la finestra). Da neofita, pensavo banalmente di poter ottenere i valori (a me necessari) attraverso i metodi sopra descritti, ma non è così.
    Se interessa potrei riportare il codice completo sia della pagina html sia del generatore di popup per porlo all'attenzione. Grazie.
    Praticamente vorresti una cosa simile alla mia, vai www.photoman.altervista.org e clicca su "scrivimi" o "segnala il sito..."

  5. #5
    Salve,

    l'intenzione era quella di migliorare la situazione relativa alla usuale popup apribile con l'istruzione window.open, adottando uno strumento più raffinato. Questo per vari motivi, sia estetici sia pratici di programmazione; mi spiego meglio. Fino ad ora ho utilizzato window.open in maniera similare a quanto fai sul link che gentilmente mi segnalavi. Dal lato programmazione richiamavo i dati utilizzandoli nella finestra principale attraverso istruzioni del tipo window.opener etc. utilizzando il tutto per inviarli a script lato server che li elaboravano (invio i dati secondari, li elaboro e reinvio il risultato sulla pagina principale.
    Il generatore di popup open che ti segnalavo, invece ha il grande vantaggio di essere carino esteticamente e di lavorare all'interno del codice della stessa pagina html, evitando di dover inserire esternamente un'ulteriore pagina (cosi coem costretti dalle usuali finestre). L'inghippo è che non riesco ad individuare coem diavolo fare riferimento ai campi presenti nel form così come dicevo prima...
    Dai un'occhiata a questa pagina, potrebbe essere interessante: http://www.openwebware.com/products/...ups/demo.shtml

    Ti ringrazio. Un saluto.

  6. #6
    Utente bannato L'avatar di Braco
    Registrato dal
    Oct 2005
    Messaggi
    1,697
    Allora non è più una questione di lato client ma di far elabore il tutto al server, è php?

  7. #7
    Salve,

    sfortunatamente la questione è prettamente lato client (non per mancanza di modestia, ma lato server non avrei problemi). La questione ruota attorno al fatto che, quando faccio eseguire l'invio del form la lettura della proprietà document.getelementbyid('nome_campo').value mi ritorna unicamente il valore di inizializzazione "value="valore"" inserito all'interno del tag del campo. E' come se il form non venisse elaborato. Con grandissima probabilità il tutto dipende dal codice js che crea "al volo" la finestra di popup, ma essendo poco esperto di javascript, non riesco a comprendere dove sia il problema....

  8. #8
    Ciao,ho dato un'occhiata al sorgente della libreria che genera il popup "virtuale" e credo di capire qual è il problema: avviene una duplicazione degli id!
    Non ho fatto prove ma potresti risolvere cosi:

    a) la funzione controlla() la dichiari nell'head e gli passi un parametro:

    function controlla(form) {
    alert(form.nominativo.value);
    return false;
    }

    b) il form dentro il Div1,tralasciando gli orpelli tabellari sarà cosi:

    <form action="tuaPagina" method="get" onsubmit="return controlla(this)">

    <input type="text" name="nominativo" value="" />

    <input type="submit" value="invia" />

    </form>

    Vedi un po se funge

  9. #9
    Salve,

    grazie per l'aiuto. Finalmente il tutto funziona. Se mi mandi una foto a mezzo busto, ti faccio fare un monumento sotto casa :
    A parte gli scherzi, ti ringrazio; essendo di quelli che si intestardiscono sui problemi, non risolvendo avrei continuato a sbattere la testa. Spero di poter richambiare. Un cordiale saluto.

  10. #10
    ahahahaa ma figurati anzi mi hai fatto scoprire quel sistema di popup niente male,anche se andrebbe un attimino ottimizzato.
    Purtroppo il concetto di riusabilità del codice in javascript è alquanto relativo e bisogna stare molto attenti alle documentazioni,specialmente se le funzionalità implementate sono complesse!

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.