2012-10-18 8 views
5

私はウェブサイトで作業していますが、問題が発生しました。事前に設定したり、再入力slected値にするために、CodeIgniterでは、ここで見られ、あなたはあなたの問題を解決するために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; 
     } 

フォームが正しく再投入されているにも関わらず、なぜこれが機能しないのか分かりませんか?ありがとう。

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

をhelps-ホープ;'関数 – Mikhail

+0

がどのようなアラートが呼ばれているのですか? 'paypal_emailid'要素とは何ですか?どの関数が 'temp_mid'要素に値を設定しますか?あなたの問題に関する詳細情報を提供してください。私はあなたを助けようとします。 – Mikhail

+0

私はこの明日の詳細については、私が今アクセスすることはできないので、あなたにそれをもっと知ろうとします。申し訳ありません – TheChes44

答えて

1

id="temp_mid"フィールドには再入力しませんが、ここで確認してください。if(temp=="") 多分あなたはそれを再増殖させる必要がありますか?

+0

私を助けることができますか? – TheChes44

+0

'を ' – Mikhail

+0

実際には驚くほど効果がありました。 – TheChes44

0

「どのPayPalアカウントオプションを選択してください」というエラーメッセージが表示されますか? @Mikhailはあなたがtemp_mid隠しフィールドの値を再増殖されていません示唆したように

これは、常に

<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

で 'mail_account'フィールドが渡された場合、' temp_mid'フィールドに 'clicked'値を再設定することを意味します。常に失敗するとは限りません。しかし、なぜ、それはいつも失敗するのですか?さて、私はいつも取得します。検証に失敗した何かが修正された後、Paypalオプションを選択してください。 – TheChes44

+0

上記のコードを変更してください。 temp_midは何をしていますか? –

+0

はラジオボックスを非表示にするかどうかを指定します。そのコードを編集に追加しました。 – TheChes44

0

を失敗します。 3行目のif文を

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

お知らせ:それを再増殖するのを避けるために、あなただけの、そのフィールドを配置し、ラジオボタンのオプションは、次のようにjQueryのを使用して、選択された場合には検出することができました$('[name="mail_account"]:checked').size() > 0

はそれが `dohide_show(this.value)を提供してください