刷新表单而不运行表单验证

时间:2012-07-26 00:36:00

标签: php forms codeigniter validation

我正在设置一个用户可以更新数量的购物车。因为我不知道aJAX会立即执行它,所以我希望在完整的PHP中使用刷新购物车。 (you can still se my post where I try to set it up with AJAX

问题是购物车下面有一个表格,当用户更改数量(进入输入)时,他必须点击“刷新”或“重新计算”,无论如何。

所以我的问题是我得到验证过程正在运行,因为重新计算就像一个提交按钮(价格在表单方法的开头计算),因为用户修改了输入,并且对于所有具有的字段尚未填补,我收到了错误。

如何说“如果用户点击刷新,请不要将表单提交给验证过程,只考虑该输入”?我不知道是否可以在同一页面上有2个单独的表格? (他们在彼此里面)

顺便说一下,我正在使用codeIgniter。

我提供了表格的一部分,我需要听取

form_dropdown('quantity'.$product['title'],$options,$value[$product['title']],$data0);

当我想要更新数量时,只有这一个。

<ul class="form">
    <li>
        <h2>Your Information</h2>
    </li>
    <li>
        <ul class="form" id="threeColumns">
            <li>
                <?php
                echo form_open('main/Form');

                echo form_label('First Name', 'firstname');
                echo ' :</br>';
                if (set_value('firstname')) {
                    $valuefirstname = set_value('firstname');
                } else {
                    $valuefirstname = $this->session->userdata('firstname');
                }
                echo form_input('firstname', $valuefirstname);
                echo form_error('firstname');

                echo '</li><li>';

                echo form_label('Last Name', 'lastname');
                echo ' :</br>';
                if (set_value('firstname')) {
                    $valuelastname = set_value('lastname');
                } else {
                    $valuelastname = $this->session->userdata('lastname');
                }
                echo form_input('lastname', $valuelastname);
                echo form_error('lastname');

                echo '</li><li>';

                echo form_label('Email', 'email');
                echo ' :</br>';
                if (set_value('firstname')) {
                    $valueemail = set_value('email');
                } else {
                    $valueemail = $this->session->userdata('email');
                }
                echo form_input('email', $valueemail);
                echo form_error('email');
                ?>
                <div class="fError Right">
                    <?php
                    if (ISSET($error) AND $error != NULL)
                        echo $error;
                    ?>
                </div>
            </li>
        </ul>
    </li>

    <div class="break">
    </div>

    <li id="Payment">
        <div id='Table'>
            <table>
                <tr>
                    <th id="top-left">
                        Product
                    </th>
                    <th>
                        Color
                    </th>
                    <th>
                        Quantity
                    </th>
                    <th>
                        Price Per Product
                    </th>
                    <th id= "top-right">
                        Total
                    </th>
                </tr>
                <?php foreach ($products as $product) { ?>
                    <tr class="line">
                        <td>
                            <img id="tableImage" src="<?php echo base_url($product['image_url']) ?>" alt="product" width="121"  />
                        </td>
                        <td>
                            <?php echo $product['title'] ?>
                        </td>
                        <td>
                            <?php
                            $options = array(
                                '0' => '0',
                                '1' => '1',
                                '2' => '2',
                                '3' => '3',
                                '4' => '4',
                                '5' => '5',
                                '6' => '6',
                                '7' => '7',
                            );

                            if ($product['quantity'] == 0) {
                                $value[$product['title']] = set_value('quantity' . $product['title']);
                            } else {
                                $value[$product['title']] = $product['quantity'];
                            }
                            $data0 = 'class="quantSelect" value="' . $value[$product['title']] . '" id="quant' . $product['title'] . '"';

                            echo form_dropdown('quantity' . $product['title'], $options, $value[$product['title']], $data0);
                            ?>
                        </td>
                        <td>
                            <?php echo $product['price'] ?>
                        </td>
                        <td id="<?php echo 'price' . $product['title'] ?>">
                            $<?php echo $total[$product['title']] ?>
                        </td>
                    </tr>
                    <?php } ?>

由于

1 个答案:

答案 0 :(得分:0)

一种简单的方法是为表单设置两个规则集。一个是所有领域和'必需'。另一个是相同的规则,但没有“必需”

然后,如果刷新,运行表单验证没有'required'

如果提交,请使用所需的规则集运行表单验证。