【发布时间】:2012-10-09 10:42:14
【问题描述】:
我正在开发一个网站,但遇到了问题。为了预先设置或重新输入选定的值,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>
这在验证后工作得非常好,因为如果表单的另一部分有错误,则选择了前一个单选按钮。但是,当用户更正错误后尝试重新提交页面时,单选选项的验证失败,要求我再次单击单选按钮,即使单选按钮在我之前选择的选项上被视觉选中。所以我必须再次选择单选按钮,然后才能重新提交表单。在这里可以看到调用的警报:
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');
}
此外,Paypal 电子邮件 ID 只是检查用户输入的 paypal 电子邮件地址(如果他们有 paypal 帐户)。谢谢大家的帮助。
【问题讨论】:
-
请提供
dohide_show(this.value);函数 -
什么警报叫?什么是
paypal_emailid元素?填充temp_mid元素的函数是什么?提供有关您的问题的更多信息,我会尽力帮助您 -
明天我会尽力为您提供更多信息,因为我现在无法访问它。对不起
-
email ID 只是查看用户是否有一个 paypal 电子邮件,然后验证它,如果他/她没有,则不用担心。名为“请选择 Paypal 帐户选项”的警报。 temp_mid 只是看是否显示这组问题。我已将新代码放在编辑中。
标签: php javascript html codeigniter validation