我有一个表单,我希望用户选择2种不同的结帐方式:
假设用户输入了他的地址,姓名和信用信息等信息。 使用Paypal Pro,最后,我希望他能够选择是否要通过paypal或直接付款结账......这将导致第二种形式。
顺便说一句,使用CodeIgnieter,当跟随另一个表单时,我得到了第二个表单总是运行的验证过程,我的意思是当我从第一个表单到第二个表单时,在第二个表单中我即使用户没有尝试提交,也会看到每个字段都会显示我的错误消息。有没有办法避免这个错误?
谢谢!
答案 0 :(得分:9)
已编辑:请参阅答案的结尾
你应该像平常一样:
查看:
<form method="post" action="mysite.com/submit">
<input type="text" name="name1">
<input type="text" name="name2">
<input type="text" name="name3">
<input type="submit" name="sbm" value="Direct">
<input type="submit" name="sbm" value="PayPal">
</form>
在PHP(可能是控制器)中:
if($this->input->post('sbm') == "PayPal") {
// do something with PayPal
} else {
// do something with direct payment
}
已编辑:如果您希望按钮标题(可见文字)与值不同,请使用<button>
元素而不是<input type="submit">
:
<button name="payment_type" value="paypal" type="submit">I want to pay with PayPal</button>
<button name="payment_type" value="direct" type="submit">Or should I go with Direct Payment?</button>
答案 1 :(得分:1)
使用某些条件来应用验证规则。
if(isPayPalPro())
{
$this->form_validation->set_rules(....);
}else
{
//validation credit card payment
}
使用某些条件而不是isPayPalPro()。
答案 2 :(得分:1)
我个人更喜欢的替代方案是以不同的方式命名每个提交按钮,如下所示:
<form method="post" action="mysite.com/submit">
<input type="text" name="name1">
<input type="text" name="name2">
<input type="text" name="name3">
<input type="submit" name="direct" value="Direct">
<input type="submit" name="paypal" value="PayPal">
</form>
然后检查发送了哪个值:
if($this->input->post('direct')){
//Direct button was pressed
}
if($this->input->post('paypal')){
//Paypal button was pressed
}