2012-10-18 18 views
5

मैं एक वेबसाइट पर काम कर रहा हूं, और मैंने एक समस्या में भाग लिया है। क्रम में पहले से सेट या फिर से इनपुट slected मूल्यों में, CodeIgniter आप अपनी समस्या को हल करने के लिए set_radio उपयोग करने के लिए अनुमति देता है, यहां देखी गई:कोडइग्निटर - रेडियो इनपुट पर PHP Set_Radio

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

यह सत्यापन के बाद पूरी तरह से ठीक काम करता है, के रूप में पिछला रेडियो बटन यदि चयनित किया गया है फॉर्म के दूसरे भाग में एक त्रुटि है। लेकिन, उपयोगकर्ता ने त्रुटि को सही करने के बाद पेज को पुनः सबमिट करने का प्रयास करते समय, रेडियो चयन पर वैल्यूएशन विफल रहता है, मुझे रेडियो बटन पर दोबारा क्लिक करने के लिए कहा जाता है, भले ही रेडियो बटन को पहले चुने गए विकल्प पर दृश्यमान रूप से चुना गया हो। इसलिए फॉर्म को पुनः सबमिट करने से पहले मुझे फिर से रेडियो बटन चुनना होगा। चेतावनी कहा जाता है यहां देखा जाता है:

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

क्यों यह काम नहीं कर रहा किसी को भी पता है, भले ही यह प्रपत्र सही ढंग से repopulating है? धन्यवाद।

संपादित करें:

जो कोई क्या Mid_temp करता है के लिए कहा, तो मुझे ऐसा लगता है कि यह सिर्फ अगर वे चुने जाने की जरूरत नहीं है बटन छुपाता है।

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

} 

और यहाँ, एक पूरी तरह से अलग फ़ाइल में:

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

इसके अलावा, Paypal ईमेल आईडी सिर्फ paypal ईमेल पता जाँच कर रहा है कोड मैं में, इन केवल स्थानों यह उल्लेख किया गया है कर रहे हैं कि उपयोगकर्ता ने पेपैल खाता रखा है या नहीं। सहायता के लिए हर किसी को धन्यवाद।

+0

'dohide_show (this.value) प्रदान करें;' समारोह – Mikhail

+0

क्या चेतावनी कहा जाता है? 'Paypal_emailid' तत्व क्या है? 'Temp_mid' तत्व को कौन सा फ़ंक्शन पॉप्युलेट करता है? अपनी समस्या के बारे में अधिक जानकारी प्रदान करें और मैं आपकी मदद करने की कोशिश करूंगा – Mikhail

+0

मैं आपको कल इस बारे में अधिक जानकारी प्राप्त करने का प्रयास करूंगा, क्योंकि अब मेरे पास इसका उपयोग नहीं है। क्षमा करें – TheChes44

उत्तर

1

मुझे लगता है कि आप id="temp_mid" फ़ील्ड को दोबारा नहीं बदलते हैं, लेकिन इसे यहां देखें if(temp=="") । शायद आपको इसे फिर से स्थापित करने की ज़रूरत है?

+0

क्या आप मेरी मदद कर सकते हैं? – TheChes44

+0

'<इनपुट प्रकार =" छुपा "id =" temp_mid "value =" "/>' '' – Mikhail

+0

वास्तव में आश्चर्यजनक रूप से काम करता है, उस कोड का क्या अर्थ है? – TheChes44

0

आपको क्या त्रुटि संदेश मिल रहा है, "कृपया पेपैल खाता विकल्प चुनें।"

यह हमेशा

<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

में पास हो गया है, तो यह हमेशा असफल नहीं होता .... केवल कुछ और विफल होने पर। लेकिन रुको, वह हमेशा क्यों विफल रहता है? खैर, मैं हमेशा किसी अन्य चीज के बाद पेपैल विकल्प का चयन करता हूं जो सत्यापन विफल रहता है। – TheChes44

+0

कृपया अपने द्वारा किए गए किसी भी बदलाव के साथ ऊपर अपना कोड अपडेट करें। Temp_mid क्या करता है? –

+0

बस रेडियो बॉक्स छुपाता है या नहीं। उस कोड को संपादित करने के लिए जोड़ा गया। – TheChes44

0

असफल हो जायेगी रूप @Mikhail सुझाव आप temp_mid छिपी हुई फ़ील्ड के लिए मूल्य repopulating नहीं कर रहे हैं। आदेश में यह फिर से आबाद करने के लिए आप सिर्फ इतना है कि क्षेत्र निपटाने और पता लगाने अगर रेडियो बटन के लिए एक विकल्प निम्नलिखित तरीके से jQuery का उपयोग कर चयन किया गया है हो सकता है से बचने के लिए:

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

सूचना तीसरी पंक्ति के if बयान $('[name="mail_account"]:checked').size() > 0

आशा है कि यह helps-