我有一个表单,我希望用户选择 2 种不同的结帐方式:
假设用户输入了他的信息,例如他的地址、姓名和信用信息。最后,使用 Paypal Pro,我希望他能够选择是否要通过 paypal 或通过直接付款结帐……这将导致第二种形式。
顺便说一句,使用 CodeIgnieter,当跟随一个表单和另一个表单时,我得到了始终运行的第二个表单的验证过程,我的意思是当我从第一个表单来到第二个表单时,我会在第二个表单中看到我的即使用户尚未尝试提交,也会为每个字段显示错误消息。有没有办法避免这个错误?
谢谢 !
我有一个表单,我希望用户选择 2 种不同的结帐方式:
假设用户输入了他的信息,例如他的地址、姓名和信用信息。最后,使用 Paypal Pro,我希望他能够选择是否要通过 paypal 或通过直接付款结帐……这将导致第二种形式。
顺便说一句,使用 CodeIgnieter,当跟随一个表单和另一个表单时,我得到了始终运行的第二个表单的验证过程,我的意思是当我从第一个表单来到第二个表单时,我会在第二个表单中看到我的即使用户尚未尝试提交,也会为每个字段显示错误消息。有没有办法避免这个错误?
谢谢 !
编辑:见答案的结尾
你应该像往常一样做:
看法:
<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>
使用一些条件来应用验证规则。
if(isPayPalPro())
{
$this->form_validation->set_rules(....);
}else
{
//validation credit card payment
}
使用某些条件而不是 isPayPalPro()。
我个人更喜欢的另一种方法是将每个提交按钮命名为不同的名称,如下所示:
<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
}