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

    [Javascript] Contollo su campi di tipo select

    Ciao a tutti.

    Ho un problemino e speriamo che possiate aiutarmi a risolverlo.

    In una pagina html ho una serie di select box con varie options.
    questi select sono organizzati in 3 gruppi, e si chiamano:

    A[1]....A[n]
    B[1]....B[n]
    C[1]....C[n]

    dove n è un valore variabile.

    Adesso....Come posso controllare che nessuno di questi select contengano il valore "Seleziona..."??

    Grazie a tutti,
    Paperina
    Paperina :-)

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Dalla tua descrizione mi sfuggono alcuni dettagli, che sono pero` importanti per organizzare al meglio la funzione di controllo.

    Quante sono le select?
    Sono tutte nella stessa form?
    Quawle e` il nome esatto delle singole select?
    Il valore di n e` fisso, e` variabile, chi lo conosce? (e` trasmesso dal server, e` elaborato sul client in base a ...?)
    Quello che tu chiami valore "Seleziona ..." e` posizionato sempre come prima opzione?
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    -Quante sono le select?
    Le select sono un numero variabile che va da 1 a n, e sono organizzate in 3 gruppi. Cioè ci sono 3 gruppi di select che si chiamano:
    A[1],A[2],A[3],A[4],A[5]....A[n]
    B[1],B[2],B[3],B[4],B[5]....B[n]
    C[1],C[2],C[3],C[4],C[5]....C[n]

    -Sono tutte nella stessa form?
    Si, una forma che con molta fantasia si chiama "myform"

    -Quawle e` il nome esatto delle singole select?
    A[1],A[2],A[3],A[4],A[5]....A[n]
    B[1],B[2],B[3],B[4],B[5]....B[n]
    C[1],C[2],C[3],C[4],C[5]....C[n]

    -Il valore di n e` fisso, e` variabile, chi lo conosce? (e` trasmesso dal server, e` elaborato sul client in base a ...?)
    E' variabile ed è una variabile php, che potrei anche inserire dentro una variabile JScript

    -Quello che tu chiami valore "Seleziona ..." e` posizionato sempre come prima opzione?
    SI
    Paperina :-)

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Allora suppongo che una select abbia questo tag:
    <select name="A[0]"> (con la A, B, C maiuscola)

    e NON che ci siano diverse select con:
    <select name="A">

    Perche` i numeri dentro le quadre iniziano da 1? non sarebbe piu' logico (anche dal punto di vista del PHP) che iniziassero da 0? Io suppongo che vadano da 0 a n-1

    La funzione verra` chiamata dal tag form cosi`:
    <form name="myform" onsubmit="return verfica(this);">

    codice:
    <script type="text/javascript">
    var num = $n; // il valore di n trasmesso dal PHP
    var sel = new Array();
    
    function verifica(ff) {
      for(var i=0; i<num; i++) {
        sel[0] = ff.elements['A['+i+']'];
        sel[1] = ff.elements['B['+i+']'];
        sel[2] = ff.elements['C['+i+']'];
    
        for(var j=0; j<3; j++) {
          if(sel[j].selectedIndex == 0) {
            alert("campo select "+sel[j].name+" non compilato");
            sel[j].focus();
            return false;
          }
        }
      }
      return true;
    }
    La funzione si ferma ad ogni errore che trova, e lascia il focus sulla select non compilata. Si potrebbe anche fare la verifica di tutte, e mandare un messaggio unico, ma cosi` e` leggermente piu` semplice.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Ok, solo che c'è un piccolo dettaglio, io la funzione che spedisce i dati la ho gia (perchè deve fare altre cose).
    Quindi devo adattare il tuo codice alla mia funzione:

    function salvataggio()
    {
    var num = 7; // il valore di n trasmesso dal PHP
    var sel = new Array();
    for(var i=0; i<num; i++) {
    sel[0] = myform.elements['presenza['+i+']'];
    sel[1] = myform.elements['promozione['+i+']'];
    sel[2] = myform.elements['esposizione['+i+']'];
    for(var j=0; j<3; j++) {
    if(sel[j].selectedIndex == 0) {
    alert("campo select "+sel[j].name+" non compilato");
    sel[j].focus();
    }
    }
    }
    //Invia il form
    myform.action='index.php?page=rilievi&op=riepilogo ';
    myform.submit();
    }

    Così funziona in parte: mi da un messaggio di errore per ogni campo non selezionato, e poi invia lo stesso il form.
    Come posso fare per ovviare al problema?
    Paperina :-)

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Se togli il return false per forza.

    Non far partire il form da JS: e` una tecnica che non paga (non e` accessibile e poi ti trovi a dover gestire molti piu` errori lato server).

    Inserisci invece quello che serve a te prima del return true:

    ff.action = 'index.php?page=rilievi&op=riepilogo';
    return true;

    Nota che davanti alla chiamata della funzione c'e` un return!!

    Nota che il tuo script funziona solo in IE: gli altri boowser non hanno definito il form come oggetto a se stante.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    E un'altra cosa....
    Questo form si apre in pop-up, e dovrebbe passare i dati alla pagina che ha chiamato questo pop-up.

    Ho provato a mettere il nome della pagina chiamante nell'action del form, solo che apre la pagina all'interno del popup stesso.

    C'è un modo per spedire i dati alla pagina chiamante?

    Grazie
    Paperina :-)

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non e` possibile che continui a cambiare le specifiche.

    Comunque il problema e` gia` stato affrontato piu` volte: fai una ricerca nel forum.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  9. #9
    Ok, grazie di tutto
    Paperina :-)

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.