2012-10-18 45 views
5

我正在一個網站上工作,並且遇到了問題。爲了預先設置或重新輸入slected值,笨允許您使用set_radio解決您的問題,在這裏看到:CodeIgniter - 無線電輸入上的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; 
     } 

有沒有人知道爲什麼這不起作用,即使它正在重新填寫表單正確?謝謝。

編輯:

大家誰問什麼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'); 
      } 

此外,貝寶電子郵件ID就是檢查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

嘗試更換'''與 input-> post('mail_account'))?'clicked':''?>「/>' – Mikhail

+0

實際上這很有效,代碼是什麼意思? – TheChes44

0

您收到什麼錯誤消息,「請選擇PayPal賬戶選項。」?

這總是會失敗

<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隱藏字段的值。爲了避免重新填充它,你可以只處理那場,如果單選按鈕的選項已經通過以下方式使用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-