【问题标题】:How to load bootstrap modal with error after page reload (using codeigniter)页面重新加载后如何加载带错误的引导模式(使用codeigniter)
【发布时间】:2016-12-13 08:30:51
【问题描述】:

我有一个弹出模型,用户可以在其中添加课程名称。我在我的 codeigniter 控制器中添加了表单验证,然后如果验证为假,我将再次加载我的视图,并在模型中的表单输入上方显示表单错误,但由于页面重新加载,模型关闭。我想要的是如果表单验证为假,我想在打开模式的情况下重新加载页面。我不熟悉ajax。任何帮助将不胜感激。

Codeigniter 控制器

$this->form_validation->set_rules('course_name', 'Course Name', 'required|max_length[30]');
$this->form_validation->set_error_delimiters('<div class="text-danger">', '</div>');
if ($this->form_validation->run() ) {
  echo "inserted";
}else {
  $this->load->view('admin/coursename');
}

Codeigniter 视图(模态代码)

<center><button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">Add Course</button><center>
    <!-- Modal -->

    <div class="modal fade"  data-backdrop="static" data-keyboard="false" id="myModal" role="dialog">
      <div class="modal-dialog">
        <!-- Modal content-->
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal">&times;</button>
            <h4 class="modal-title">Add Course</h4>
          </div>
          <div class="modal-body">
              <form action="" method="post">
                    <div class="form-group">
                      <label for="name">Course Name:</label>
                        <?php echo form_error('course_name'); ?>
                      <input type="text" class="form-control" id="name" name="course_name" placeholder="Enter course name...">
                    </div>
                    <div class="form-group">
                      <button type="submit" class="btn btn-success">Save</button>
                      <button type="reset" class="btn btn-warning">Cancel</button>
                    </div>
              </form>
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
          </div>
        </div>
      </div>
    </div>

【问题讨论】:

  • 你熟悉jqury吗?然后我有解决方案。
  • 你已经添加了ajax标签,所以你使用ajax提交表单吗?

标签: php jquery ajax twitter-bootstrap codeigniter


【解决方案1】:

您可以使用 jquery ".ajax()" 方法调用验证控制器而无需刷新,然后控制器会回显您的 j-query 代码现在必须解释的结果。下面的示例代码。 您可以像这样修改视图代码:

<div class="modal fade"  data-backdrop="static" data-keyboard="false" id="myModal" role="dialog">
<div class="modal-dialog">
    <!-- Modal content-->
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal">&times;</button>
            <h4 class="modal-title">Add Course</h4>
        </div>
        <div class="modal-body">
            <div class="err">

            </div>
            <form action="" method="post" id ="yourform">
                <div class="form-group">
                    <label for="name">Course Name:</label>
                    <?php echo form_error('course_name'); ?>
                    <input type="text" class="form-control" id="name" name="course_name" placeholder="Enter course name...">
                </div>
                <div class="form-group">
                    <button type="submit" class="btn btn-success">Save</button>
                    <button type="reset" class="btn btn-warning">Cancel</button>
                </div>
            </form>
        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
        </div>
    </div>
</div>

<script>
$("#yourform").submit(function (event) {
    var form = $(this).closest('form');
    field1 = $(form).find('.field1').val();
    field2 = $(form).find('.field2').val();

    $.ajax({
        url: '<?php echo site_url('your/controller/url') ?>',
        type: 'POST',
        data: {field2: field2, field2: field2},

        success: function (result) {
            //alert(result);return false;
            if (result == 1)
            {
                location.reload();
            } else
            {
                $('#err').html(result);
            }

        }
    });

    event.preventDefault();
});

然后你可以像这样配置你的控制器:

<?php

$this->form_validation->set_rules('course_name', 'Course Name',    'required|max_length[30]');
$this->form_validation->set_error_delimiters('<div class="text-danger">',    '</div>');
if ($this->form_validation->run()) {
echo "1";
} else {
echo "<b>" . validation_errors() . "</b>";
}
?>

希望对我有所帮助

【讨论】:

    【解决方案2】:

    你可以在ajax成功函数中使用location.reload("Your Page Name")函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      • 2023-04-02
      相关资源
      最近更新 更多