È Javascript causando la mia forma di non eco selezionato una volta errore ricarica la pagina?

StackOverflow https://stackoverflow.com/questions/2232950

Domanda

Sono ancora un principiante di PHP / Javascript / Ajax e sto avendo un momento molto difficile (andata avanti per settimane) la risoluzione dei problemi di questo problema.

Il mio sito ha una registrazione ad essere una pagina utente che richiede tutti i campi da compilare. Questo è un sito per la comunità fibrosi cistica, per cui v'è una sezione sulla forma in cui si sceglie il vostro rapporto con Fibrosi Cistica. (Ce l'ho / Qualcuno che conosco l'ha) Se si sceglie l'ho, viene visualizzata una casella a discesa e ti dà la possibilità Fibro (maschio) o Cyster (femmina). Se si sceglie qualcuno che conosco, una goccia diverso si apre verso il basso con le varie opzioni (zia, zio, ecc.)

ho una miriade di possibili errori che possono essere fatte. Le password non corrispondono, captcha o condizioni di utilizzo non controllato / compilato, ecc ... quindi la pagina viene ricaricata per visualizzare il messaggio di errore. Ho messo "Echo selezionato" in tutti i miei valori di opzione da avere la pagina di caricare le informazioni precedentemente selezionato come dovrebbe. Quando si sceglie 'Ho CF' questo è ciò che accade:

Al momento della firma - se seleziono "Ho CF" la prima volta ma dimentica di riempire "Cyster o Fibro" Ottengo il messaggio di errore. Poi, quando ho tornare indietro e aggiungere in Cyster o Fibro, continua a dirmi, che ho bisogno di entrare nella mia relazione al CF, anche se si vede nella scatola che viene selezionato Cyster o fibro.

Se io sono la firma. Hanno riempito in relazione al CF come "Ho CF" e riempito nel "Cyster o Fibro", ma si ottiene alcun messaggio di errore (e-mail sbagliato, le password non corrispondono etc etc) la risposta Cyster o Fibro cade (non c'è) e se seleziono di nuovo, non accetta la mia scelta e continua a dire che "è necessario scegliere la vostra relazione", anche se il suo stato chiaramente selezionato.

Come ho detto, ho lottato con questo per settimane, e per quanto posso dire il mio codice è corretto. Sto pensando che abbia qualcosa a che fare con il Javascript? Ecco il mio codice:

(Per favore fatemi sapere se avete bisogno di codice circostante per aiutare, grazie)

<tr>
                            <td class="left">
                               <span style="color:#FF0000;">*</span> Relation to CF:
                            </td>
                            <td class="right">
                                <select name="CFDistance" onchange="switch_distance(this);">
                                    <option value="null" disabled selected>choose one</option>
                                    <option value="self" <?php if($_POST['CFDistance'] == "self") { echo "selected"; } ?>>I have CF</option>
                                    <option value="others" <?php if($_POST['CFDistance'] == "others") { echo "selected"; } ?>>Someone I know has CF</option>
                                </select>

                                <div id="self_cf_box" class="signup_dropdowns" style="margin:10px 0px 0px 0px;<?php if($_POST['CFDistance'] != "self") { echo "display:none;"; } ?>">
                            <span style="color:#FF0000;">*</span> I am a
                                    <select id="RelationToCF_self" name="RelationToCF" <?php if($_POST['CFDistance'] != "self") { echo "display:none;"; } ?>>
                                        <option value="null" disabled selected>choose one</option>
                                        <option value="Fibro" <?php if($_POST['RelationToCF'] == "Fibro") { echo "selected"; } ?>>Fibro (male)</option>
                                        <option value="Cyster" <?php if ($_POST['RelationToCF'] == "Cyster") { echo "selected";} ?>>Cyster (female)</option>

                                    </select>
                                </div>

Qui è l'altra opzione (lo so someon con CF) che sta lavorando bene:

<div id="others_cf_box" class="signup_dropdowns" style="margin:10px 0px 0px 0px;<?php if($_POST['CFDistance'] != "others") { echo "display:none;"; } ?>">
                                <span style="color:#FF0000;">*</span> I am this person's
                                    <select id="RelationToCF_others" name="RelationToCF" <?php if($_POST['CFDistance'] != "others") { echo "display:none;"; } ?>>
                                        <option value="null" disabled selected>choose one</option>
                                        <option value="Mom" <?php if ($_POST['RelationToCF'] == "Mom") { echo "selected"; } ?>>Mom</option>
                                        <option value="Dad" <?php if ($_POST['RelationToCF'] == "Dad") { echo "selected"; } ?>>Dad</option>
                                        <option value="Aunt" <?php if ($_POST['RelationToCF'] == "Aunt") { echo "selected"; } ?>>Aunt</option>
                                        <option value="Brother" <?php if ($_POST['RelationToCF'] == "Brother") { echo "selected"; } ?>>Brother</option>
                                        <option value="Caregiver" <?php if ($_POST['RelationToCF'] == "Caregiver") { echo "selected"; } ?>>Caregiver</option>
                                        <option value="Child" <?php if ($_POST['RelationToCF'] == "Child") { echo "selected"; } ?>>Child</option>
                                        <option value="Cousin" <?php if ($_POST['RelationToCF'] == "Cousin") { echo "selected"; } ?>>Cousin</option>
                                         <option value="Friend" <?php if ($_POST['RelationToCF'] == "Friend") { echo "selected"; } ?>>Friend</option>
                                        <option value="Grandma" <?php if ($_POST['RelationToCF'] == "Grandma") { echo "selected"; } ?>>Grandma</option>
                                        <option value="Grandpa" <?php if ($_POST['RelationToCF'] == "Grandpa") { echo "selected"; } ?>>Grandpa</option>
                                        <option value="Guardian" <?php if ($_POST['RelationToCF'] == "Guardian") { echo "selected"; } ?>>Guardian</option>
                                        <option value="Husband" <?php if ($_POST['RelationToCF'] == "Husband") { echo "selected"; } ?>>Husband</option>
                                        <option value="Nephew" <?php if ($_POST['RelationToCF'] == "Nephew") { echo "selected"; } ?>>Nephew</option>
                                        <option value="Niece" <?php if ($_POST['RelationToCF'] == "Niece") { echo "selected"; } ?>>Niece</option>
                                        <option value="Partner" <?php if ($_POST['RelationToCF'] == "Partner") { echo "selected"; } ?>>Partner</option>
                                        <option value="Sister" <?php if ($_POST['RelationToCF'] == "Sister") { echo "selected"; } ?>>Sister</option>
                                        <option value="Uncle" <?php if ($_POST['RelationToCF'] == "Uncle") { echo "selected"; } ?>>Uncle</option>
                                        <option value="Wife" <?php if ($_POST['RelationToCF'] == "Wife") { echo "selected"; } ?>>Wife</option>
                                    </select>


                            </div>

Ecco il chunck javascript:

<script type="text/javascript">
    function switch_distance(el) {
        if(el.value == 'self') {
            document.getElementById('self_cf_box').style.display = "block";
            document.getElementById('RelationToCF_self').disabled = false;
            document.getElementById('others_cf_box').style.display = "none";
            document.getElementById('RelationToCF_others').disabled = true;
        }else{
            document.getElementById('self_cf_box').style.display = "none";
            document.getElementById('RelationToCF_self').disabled = true;
            document.getElementById('others_cf_box').style.display = "block";
            document.getElementById('RelationToCF_others').disabled = false;
        }
    }
</script>
È stato utile?

Soluzione

Il modo migliore per raggiungere questo obiettivo è quello di usare JavaScript per caricare i valori e la convalida. Vorrei utilizzare un framework per rendere più facile.

  • ExtJS
  • Dojo
  • JQuery

ci sono alcuni dei più noti. Questi hanno validatori forma costruita in lungo con funzionalità AJAX per rendere il vostro come più facile.

http://www.extjs.com/deploy/ dev / examples / form / dynamic.html

Altri suggerimenti

La soluzione migliore è quello di validare sul lato PHP (usando AJAX) e restituire il risultato di validazione come JSON. Anche vedere qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top