2

我有一个表单,我希望用户选择 2 种不同的结帐方式:

假设用户输入了他的信息,例如他的地址、姓名和信用信息。最后,使用 Paypal Pro,我希望他能够选择是否要通过 paypal 或通过直接付款结帐……这将导致第二种形式。

顺便说一句,使用 CodeIgnieter,当跟随一个表单和另一个表单时,我得到了始终运行的第二个表单的验证过程,我的意思是当我从第一个表单来到第二个表单时,我会在第二个表单中看到我的即使用户尚未尝试提交,也会为每个字段显示错误消息。有没有办法避免这个错误?

谢谢 !

4

3 回答 3

10

编辑:见答案的结尾

你应该像往常一样做:

看法:

<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>
于 2012-07-09T08:04:55.810 回答
1

使用一些条件来应用验证规则。

if(isPayPalPro())
{
    $this->form_validation->set_rules(....);
}else
{
    //validation credit card payment
}

使用某些条件而不是 isPayPalPro()。

于 2012-07-09T08:07:20.787 回答
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
}
于 2014-06-04T17:26:17.573 回答