2012-10-18 6 views
5

Sto lavorando a un sito Web e ho riscontrato un problema. Al fine di pre-impostare o re-ingresso valori slected, Codeigniter consente di utilizzare set_radio per risolvere il problema, visto qui:CodeIgniter - PHP Set_Radio su Radio Input

<td>Do You Have a PayPal Account <span class="error">*</span> : </td> 
<td colspan="2" align="left" valign="top"><label> 
    <!-- used for validation --> 
    <input type="hidden" id="temp_mid" value="" /> 
    <input name="mail_account" type="radio" id="p_same" value="same" onclick="dohide_show(this.value);" <?php echo set_radio('mail_account', 'same'); ?>/> Yes(same as email address as above.)<br/> 
    <input name="mail_account" type="radio" id="p_diff" value="diff" onclick="dohide_show(this.value);" <?php echo set_radio('mail_account', 'diff'); ?>/> Yes(different than above.)<br/> 
    <input name="mail_account" type="radio" id="p_checkInMail" value="checkInMail" onclick="dohide_show(this.value);" <?php echo set_radio('mail_account', 'checkInMail'); ?>/> No(I would prefer to receive a check in the mail.)     
    <?php echo form_error('mail_account'); ?>   

</td> 

Questo funziona perfettamente bene dopo la convalida, come il pulsante di opzione precedente è stata selezionata, se c'è un errore in un'altra parte del modulo. MA, quando si tenta di inviare nuovamente la pagina dopo che l'utente ha corretto l'errore, la valditazione non riesce nella selezione radio, chiedendomi di fare nuovamente clic sui pulsanti di opzione, anche se il pulsante di opzione è selezionato visivamente sull'opzione che ho scelto prima. Quindi devo scegliere nuovamente il pulsante di opzione prima di poter inviare di nuovo il modulo. L'avviso chiamato è visto qui:

function validate_playpal() 
     { 
      var temp=$('#temp_mid').val(); 
      if(temp=="") 
      { 
       alert('Please select the PayPal account option.');     
       $('#p_same').focus(); 
       return false; 
      } 
      if(document.getElementById('p_diff').checked== true && document.getElementById('paypal_emailid').value=='') 
      { 
       alert('Please provide your PayPal email address.'); 
       document.getElementById('paypal_emailid').focus(); 
       return false; 
      } 

      if(document.getElementById('paypal_emailid').value!='') 
      { 
       if(!email_format(document.getElementById('paypal_emailid').value)){ 
        alert('Please enter valid email address.'); 
        document.getElementById('paypal_emailid').value=""; 
        document.getElementById('paypal_emailid').focus(); 
        return false;    
       } 
      } 
      return true; 
     } 

Qualcuno sa perché questo non funziona, anche se è ripopolare il modulo correttamente? Grazie.

EDIT:

Per tutti coloro che ha chiesto per che cosa fa Mid_temp, mi pare che solo nasconde i pulsanti se non hanno bisogno di essere selezionati. Nel codice che ho, questi sono gli unici luoghi è menzionato:

$('#bx').hide(); 
if(document.getElementById('p_diff').checked==true){  
    $('#bx').show(); 
} 

function dohide_show(val){ 
    if(val=='diff') 
    {  
     $('#bx').show(); 
     $('#paypal_emailid').val(''); 
     document.getElementById('p_diff').checked=true; 
     $('#temp_mid').val('clicked'); 
    } 
    else if(val=='same') 
    {  
     $('#bx').hide(); 
     $('#paypal_emailid').val($('#email_id').val()); 
     $('#temp_mid').val('clicked'); 
    } 
    else 
    { 
     $('#bx').hide(); 
     $('#paypal_emailid').val($('#email_id').val()); 
     $('#temp_mid').val('clicked'); 
    } 

} 

e qui, in un file completamente separato:

function hide_box() 
      { 
       $('#bx').hide(); 
       $('#paypal_emailid').val(''); 
       $('#temp_mid').val('clicked'); 
      } 
      function show_box() 
      { 
       $('#bx').show(); 
       $('#paypal_emailid').focus(); 
       $('#temp_mid').val('clicked'); 
      } 

Inoltre, Paypal e-mail ID è solo controllando l'indirizzo email paypal che l'utente inserisce se ha un account paypal. Grazie per l'aiuto a tutti.

+0

si prega di fornire il dohide_show (this.value) ',' funzione – Mikhail

+0

Cosa avviso si chiama? Cos'è l'elemento 'paypal_emailid'? Quale funzione popola l'elemento 'temp_mid'? Fornisci ulteriori informazioni sul tuo problema e cercherò di aiutarti – Mikhail

+0

Cercherò di darti ulteriori informazioni su questo domani, dato che ora non ho accesso ad esso. Scusa – TheChes44

risposta

1

Vedo che non ripopolare il campo id="temp_mid" ma controllare qui if(temp=="") . Forse hai bisogno di ripopolarlo anche tu?

+0

Potete aiutarmi? – TheChes44

+0

prova a sostituire '' con '' – Mikhail

+0

in realtà ha funzionato in modo sorprendente, cosa significa quel codice? – TheChes44

0

Quale messaggio di errore viene visualizzato, "Selezionare l'opzione Account PayPal."?

Questo sarà sempre fallire

<input type="hidden" id="temp_mid" value="" /> 

...... 
var temp=$('#temp_mid').val(); 
if(temp=="") 
{ 
    alert('Please select the PayPal account option.');     
    $('#p_same').focus(); 
    return false; 
} 
+0

bene, non sempre fallisce .... Solo quando qualcos'altro fallisce. Ma aspetta, perché fallisce sempre? Bene, ottengo sempre Per favore seleziona l'opzione Paypal dopo che qualcos'altro che fallisce la validazione è stato corretto. – TheChes44

+0

Si prega di aggiornare il codice sopra con tutte le modifiche apportate. Cosa fa temp_mid? –

+0

nasconde semplicemente le radio o no. Aggiunto quel codice alla modifica. – TheChes44

0

Come @Mikhail suggerito non si sta ripopolando il valore per il campo nascosto temp_mid. Al fine di evitare di dover ripopolare esso si può solo smaltire quel campo e rilevare se è stata selezionata l'opzione per il pulsante di opzione utilizzando jQuery nel seguente modo:

function validate_playpal() 
{ 
    if($('[name="mail_account"]:checked').size() > 0) 
    { 
     alert('Please select the PayPal account option.');     
     $('#p_same').focus(); 
     return false; 
    } 
    ... 
    return true; 
} 

Avviso il if dichiarazione nella terza riga $('[name="mail_account"]:checked').size() > 0.

spero che helps-