2012-10-18 7 views
5

Ich arbeite an einer Website, und ich habe ein Problem festgestellt. Das funktioniert völlig in Ordnung, nach der ValidierungCodeIgniter - PHP Set_Radio auf Radio Eingang

<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> 

, als die vorherigen Optionsfeld ausgewählt wurde, wenn: Um Werte voreinzustellen oder neu eingeben slected, Codeigniter können Sie set_radio verwenden, um Ihr Problem zu lösen, hier zu sehen In einem anderen Teil des Formulars ist ein Fehler aufgetreten. ABER, beim Versuch, die Seite erneut zu senden, nachdem der Benutzer den Fehler korrigiert hat, schlägt die Validitation bei der Radioauswahl fehl und fordert mich auf, erneut auf die Optionsfelder zu klicken, selbst wenn das Optionsfeld auf der zuvor ausgewählten Option visuell ausgewählt ist. Also muss ich das Optionsfeld erneut auswählen, bevor ich das Formular erneut einreichen kann. Die aufgerufene Warnung ist hier zu sehen:

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; 
     } 

Weiß jemand, warum das nicht funktioniert, obwohl es das Formular korrekt neu füllt? Vielen Dank.

EDIT:

Für alle, die für die Frage, was Mid_temp tut, scheint es mir, dass es nur die Tasten versteckt, wenn sie nicht ausgewählt werden müssen. Im Code, den ich habe, das sind die einzigen Orte, es erwähnt wird:

$('#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'); 
    } 

} 

und hier, in einer völlig separaten Datei:

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

Auch ist Paypal E-Mail-ID überprüft nur die paypal E-Mail-Adresse dass der Benutzer eingibt, wenn er ein PayPal-Konto hat. Danke für die Hilfe an alle.

+0

Sie bitte die 'dohide_show (this.value) bereitzustellen;' Funktion – Mikhail

+0

Welche Alarm genannt wird? Was ist das Element "paypal_emailid"? Welche Funktion füllt das 'temp_mid' Element? Geben Sie weitere Informationen zu Ihrem Problem an und ich werde versuchen, Ihnen zu helfen. – Mikhail

+0

Ich werde versuchen, Ihnen morgen weitere Informationen zu diesem Thema zu liefern, da ich jetzt keinen Zugriff darauf habe. Sorry – TheChes44

Antwort

1

Ich sehe, dass Sie nicht das Feld id="temp_mid" wiederbevölkern, aber überprüfen Sie es hier if(temp=="") . Vielleicht müssen Sie es auch neu bevölkern?

+0

Können Sie mir helfen? – TheChes44

+0

versuchen, die '' mit '' – Mikhail

+0

das funktionierte wirklich erstaunlich, was bedeutet dieser Code? – TheChes44

0

Welche Fehlermeldung erhalten Sie, "Bitte wählen Sie die PayPal-Konto-Option."?

Dies wird nicht immer

<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

gut übergeben wird, es nicht immer fehlschlägt .... Nur wenn etwas anderes fehlschlägt. Aber warte, warum scheitert das immer? Nun, ich bekomme immer Bitte wählen Sie die Paypal-Option, nachdem etwas anderes, die Validierung fehlgeschlagen ist, behoben ist. – TheChes44

+0

Bitte aktualisieren Sie Ihren obigen Code mit allen von Ihnen vorgenommenen Änderungen. Was macht temp_mid? –

+0

verbirgt nur die Radioboxen oder nicht. Dieser Code wurde zur Bearbeitung hinzugefügt. – TheChes44

0

Wie @Mikhail Sie vorgeschlagen werden, um den Wert für das temp_mid versteckte Feld nicht neu zu besiedeln. Um zu vermeiden, es wieder zu bevölkern Sie könnten nur das Feld entsorgen und erkennen, ob eine Option für das Optionsfeld hat mit jQuery auf folgende Weise gewählt:

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

Beachten Sie die if Anweisung in der dritten Zeile $('[name="mail_account"]:checked').size() > 0.

Hoffe, dass es helps-