CodeIgniter - 无线电输入上的PHP Set_Radio

The*_*s44 5 html javascript php validation codeigniter

我正在一个网站上工作,我遇到了一个问题.为了预先设置或重新输入所选值,Codeigniter允许您使用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>
Run Code Online (Sandbox Code Playgroud)

验证后,此工作完全正常,因为如果表单的另一部分出现错误,则选择了上一个单选按钮.但是,当用户更正错误后尝试重新提交页面时,无线电选择上的退路失败,要求我再次单击单选按钮,即使在我之前选择的选项上以可视方式选择了单选按钮.因此,在重新提交表单之前,我必须再次选择单选按钮.这里看到的警报如下:

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;
        }
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么这不起作用,即使它正确地重新填充表格?谢谢.

编辑:

对于那些要求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');
    }

}
Run Code Online (Sandbox Code Playgroud)

在这里,在一个完全独立的文件中:

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

此外,Paypal电子邮件ID只是检查用户输入的PayPal电子邮件地址,如果他们有paypal帐户.感谢大家的帮助.

Mik*_*ail 1

我发现您没有重新填充该id="temp_mid"字段,但请在此处检查if(temp=="") 。也许您也需要重新填充它?