弹出式登录时的Codeigner表单验证


Codeigniter form validation on pop up login

我想在我的弹出登录窗口中使用CodeIgniter上的表单验证库,当出现错误时,我想在弹出窗口中回显验证错误。

if ($this->form_validation->run()==FALSE){
    $this->load->view("header");
    $this->load->view("menu");
    $this->load->view("content");
}

因为当错误发生时,视图将重新加载,弹出窗口将关闭有没有办法在错误发生时打开我的弹出窗口?

对于表单验证的返回,您可以执行以下操作:

        $this->output->set_output(json_encode([
            'result' => 0,
            'error' => $this->form_validation->error_array()
        ]));
        return false;
    }

它会返回你的for需求和错误,然后在jQuery中你会做这样的事情:

<!-- Javascript POST -->
<script type="text/javascript">
    $(function() {
        $("#login_error").hide();
        // Check the login form, so your form name may vary
        $("#login_form").submit(function(evt) {
            evt.preventDefault();
            var url = $(this).attr('action');
            var postData = $(this).serialize();
            // Grab the post data
            $.post(url, postData, function(o) { 
                if (o.result == 1) {
                    // Redirect for successful loging
                    window.location.href = '<?=site_url('pageheretogoto')?>';
                } else {
                $("#login_error").show(); // Show your popup window, I'm showing a div here of #login-error
                var output = '<ul>'; // Format the output into a list
                for (var key in o.error) {
                    var value = o.error[key];
                    output += '<li>' + value + '</li>';
                }
                output += '</ul>';
                $("#login").html(output); // Modify the html output for the #login div which you would probably change it to your pop-up.
                }
            }, 'json');
        });
    });
</script>

您需要确保修改div名称,但这将为您提供一个很好的起点:1)无需刷新页面,2)将内容放在您想要的位置。该示例不使用弹出窗口或模式框,但您可以很容易地对其进行调整。

只要使用jQuery.validate()并匹配同一组规则,它的工作方式就会太复杂。您必须提交表单,刷新页面,然后在出现错误时打开弹出窗口。这有点。。。错误的

参考:http://jqueryvalidation.org/