【问题标题】:How to combine jquery form validation with codeigniter?如何将jquery表单验证与codeigniter结合起来?
【发布时间】:2013-07-20 18:56:50
【问题描述】:

大家好,我有一个小问题。我的问题是我想将 jquery 表单验证插件与 codeigniter 一起使用。到目前为止,我可以使用 jquery 验证规则来验证我的表单。就像检查必填字段,检查输入长度,检查有效电子邮件等......但是为了检查我数据库中数据的可用性,我总是遇到错误。我使用了远程功能,但无法验证我的表单。这是我的代码,希望你能帮助我。

addNewItem.php

  <script type="text/javascript">

 (function($,W,D){

    var JQUERY4U = {};

    JQUERY4U.UTIL =
    {
        setupFormValidation: function()
        {
            $("#login-form").validate({
            rules: {
                name: {
                    required: true,
                    remote: {
                        type: 'post',
                        url: <?php echo site_url('category_model/checkName'); ?>,
                        data: {
                            'name': $('#name').val()
                        },
                        datatype: 'json'
                    }

                },
                description: {
                    required: true
                }
           },
           messages: {
                username: {
                    remote: "Category name already taken!"
                }
                description: "Please provide a description for category!"
           }

        });

    }
}

    //when the dom has loaded setup form validation rules
    $(D).ready(function($) {
        JQUERY4U.UTIL.setupFormValidation();
    });

})(jQuery, window, document);

</script>

 <div>
  <?php $attr = array('class'=>'form-signin','id'=>'login-form','novalidate'=>'novalidate'); ?>
  <?php echo form_open('category_controller/insertItem',$attr); ?>
    <h2 class="form-signin-heading"></h2>
        <h5 style="font-weight: normal;">Category Name:</h5>
        <input type="text" class="input-block-level" placeholder="Category Name" name="name" autofocus="autofocus" value="" required="requried" id="name" />
        <h5 style="font-weight: normal;">Desciption</h5>
        <input type="text" class="input-block-level" placeholder="Description" name="description" value="" required="required" id="description" />
        <br />
        <div align="right">
            <input type="submit" value="OK" class="btn btn-large btn-primary" />
            <input type="button" value="CANCEL" class="btn btn-large btn-primary" name='cancel' />
        </div>
  <?php echo form_close(); ?>

我的模型(category_model/checkName)

public function checkName(){

    $catname = ucwords($this->input->post('name'));
    $validate = "SELECT COUNT(*) AS valid FROM sales_category WHERE salescatname = '{$catname}'";
    $testvalidate = $this->db->query($validate);
    foreach($testvalidate->result_array() as $row){
        $is_valid = $row['valid'];
    }

    if($is_valid > 0){
        return TRUE;
    }else{
        return FALSE;
    }
}

【问题讨论】:

  • 从数据库返回什么查询?你调试 $is_valid 了吗?
  • 是的。我的查询正在运行。
  • ajax 调用是否有效?您可以使用 Chrome 开发工具上的网络选项卡来分析 XHR 请求。您也不能直接从 url 调用模型中的方法,因此在您的 url 中 category_model 应该是您的控制器的名称,除非您当然使用 url 路由。
  • 仍然无法正常工作。如果我包含远程功能,我的表单将停止工作。如果我移除遥控器。我可以再次添加新类别。

标签: php jquery codeigniter jquery-validate


【解决方案1】:

尝试更改以下内容

public function checkName()

{

   $catname = ucwords($this->input->post('name'));
    $validate = "SELECT COUNT(*) AS valid FROM sales_category 
                  WHERE salescatname = '{$catname}'";
    $testvalidate = $this->db->query($validate);
    foreach($testvalidate->result_array() as $row){
        $is_valid = $row['valid'];
    }

    echo $is_valid;

}

【讨论】:

  • &lt;script type="text/javascript"&gt; $("#login-form").validate({ rules: { name: { required: true, remote: &lt;?php echo site_url('category_controller/checkName'); ?&gt; }, description: { required: true } }, messages: { name: "Please provide a name for Category", description: "Please provide a description for Category" } }); &lt;/script&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多