【问题标题】:form_validation still showing on reloadform_validation 仍然在重新加载时显示
【发布时间】:2019-01-23 18:19:04
【问题描述】:

我有一个表单,我在提交时使用 form_validation 检查错误,显示错误和输入的 set_value,但如果使用 ctrl+r 重新加载页面,错误和 set_value 仍然显示。

任何人都知道如何将表单重新加载为空

控制器:

public function ajoutAffairePI(){

        $this->form_validation->set_rules('nomPrenomAD','Nom Prenom','required|min_length[5]',array(
            'required' => "Le champ %s est obligatoire.",
            'min_length' => "Le champ %s doit comporter au moins 5 caractères."
        ));

        $this->form_validation->set_rules('matriculePA','Matricule','required|min_length[8]|max_length[8]|numeric',array(
            'required' => "Le champ %s est obligatoire.",
            'min_length' => "Le champ %s doit comporter au moins 8 caractères.",
            'max_length' => "Le champ %s ne peut pas dépasser 8 caractères.",
            'numeric'=> "Le champ %s ne doit contenir que des chiffres."
        ));
        $this->form_validation->set_rules('nomPrenomPA','Nom Prenom','required|min_length[5]');

        $this->form_validation->set_rules('numeroAffaire',"Numéro d'affaire",'required|numeric|min_length[5]|callback_numeroAffaire_check["AFFAIRE_PREMIERE_INSTANCE"]');


        if($this->form_validation->run() === FALSE){
            $this->load->view('templates/header');
            $this->load->view('templates/ajouter');
            $this->load->view('templates/footer');
        }
        else{
            $this->affaires_model->set_affaire_pi();
            redirect('affaire/home');
        }
    }

查看:

<div class="container">
   <h2>Ajouter une affaire</h2>
<?php echo form_open('',array('class'=>'container-fluid')); ?>
<fieldset>
    <legend>Dossier</legend>
    <div class="form-inline">
        <label class="mb-2 mr-sm-2">Nom de Dossier</label>
        <input type="text" class="form-control mb-2 mr-sm-2" value="<?php echo set_value('nomDeDossier'); ?>"  placeholder="Nom de Dossier" name="nomDeDossier" required>
        <label class="mb-2 mr-sm-2">Numéro de Dossier</label>
        <input type="Number" class="form-control mb-2 mr-sm-2" value="<?php echo set_value('numeroDeDossier'); ?>" placeholder="Numéro de Dossier" name="numeroDeDossier" required>
    </div>
</fieldset>
<fieldset>
    <legend>T.P.I</legend>
        <div class="form-inline">
            <label class="mb-2 mr-sm-2">N° AFF</label>
            <input type="text" class="form-control mb-2 mr-sm-2" value="<?php echo set_value('numeroAffaire'); ?>" placeholder="Numéro d'affaire" name="numeroAffaire">
            <?php echo form_error('numeroAffaire');?>
            <label class="mb-2 mr-sm-2">Date Jugement</label>
            <input type="date" class="form-control mb-2 mr-sm-2" value="<?php echo set_value('dateJugement'); ?>"  placeholder="Date Jugement" name="dateJugement" required>
        </div>
<button type="submit" class="btn btn-primary">Ajouter</button>

【问题讨论】:

  • 如果您重新加载页面,表单值会再次发送到服务器。因此再次显示验证错误。
  • 嗯,是的,但我没有点击提交按钮
  • 是的,你不需要。重新加载只是重做您的最后一个 HTTP 请求(可能是 POST)。 @Med Dah
  • 一定有一种方式不符合逻辑:/
  • 您可以直接再次访问该网址,而不是按ctrl+r。 @Med Dah

标签: php codeigniter validation


【解决方案1】:

form.reset() 是一种 DOM 元素方法(不是 jQuery 对象上的一种),所以你需要:

$("#client.frm")[0].reset();
//faster version:
$("#client")[0].reset();

或者没有 jQuery:

document.getElementById("client").reset();

【讨论】:

    【解决方案2】:

    这应该适用于您的情况:

    $(window).on('beforeunload', function(){
        $("form")[0].reset();
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-13
      • 2018-08-19
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 2018-02-01
      • 1970-01-01
      相关资源
      最近更新 更多