【问题标题】:Clear any Previous error message in Jquery CodeIgniter清除 Jquery CodeIgniter 中的任何先前错误消息
【发布时间】:2015-10-06 14:14:35
【问题描述】:

我在谷歌上搜索了很多之后发布了这个问题。我在 Jquery POST 方法上发布了我的 FORM 并在 codeigniter 中进行验证。

如果一个字段为空,它会显示错误消息,但是当我填写该字段并再次单击时,这次没有错误但它不会删除以前的错误消息。 这是我的代码

 var parameters = $("#frm_rexpert").serialize();
     var form = $("#frm_rexpert");
     $.post(siteurl+'/services/req_expert', parameters, function(data) {
        if (data.status == true) {
            //show success message
            $("#msg_exp").show();
            setTimeout(function() { $("#msg_exp").hide(); }, 5000);
        }else{
            $.each(data.errors, function(key, val) {

                $('[name="'+ key +'"]', form).after(val);

            })
        }
    }, "json");

在服务器端

       $this->form_validation->set_rules($rules);
        $this->form_validation->set_error_delimiters('<div class="error">', '</div>');
        if ($this->form_validation->run())
        {//do your code
        }else{
       $errors = array();
            // Loop through $_POST and get the keys
            foreach ($this->input->post() as $key => $value)
            {
                // Add the error message for this field
                $errors[$key] = form_error($key);
            }
            $response['errors'] = array_filter($errors); // Some might be empty
            $response['status'] = FALSE;
          }
     header('Content-type: application/json');
     exit(json_encode($response));

我的问题是“如果没有错误,我需要清除所有旧的错误消息”

【问题讨论】:

    标签: php jquery codeigniter validation


    【解决方案1】:

    如果要清除控制台,只需在成功块内使用console.clear()。如果您还想删除以前错误插入的所有内容,则需要删除每个表单输入的after。 像这样的:

     $.post(siteurl+'/services/req_expert', parameters, function(data) {
        if (data.status == true) {
            $('.error', form).remove(); //removes previous errors' notices
            console.clear(); //clears the debug console
            //show success message
            $("#msg_exp").show();
            setTimeout(function() { $("#msg_exp").hide(); }, 5000);
        } ...
    

    编辑:我更改了选择器以匹配有错误的元素。

    【讨论】:

      【解决方案2】:

      请参阅下面的代码。我已将我的 cmets 全部设置为大写字母。

      描述:您应该有两个不同的元素来显示成功和错误消息。然后在出现错误时显示错误消息,例如空字段,并在成功时隐藏错误消息,如果需要也显示成功消息。如果您想要多于一条错误消息,例如,如果有重复的错误并且您想要堆叠错误消息,那么您不应该使用 id 作为元素选择器,而是使用 class.由于 id 不能分配给 html 中的一个以上元素。使用$(".msg_exp").hide(); 而不是$("#msg_exp").hide();

      var parameters = $("#frm_rexpert").serialize();
           var form = $("#frm_rexpert");
           $.post(siteurl+'/services/req_expert', parameters, function(data) {
              if (data.status == true) {
                  //SHOW SUCCESS MESSAGE AND HIDE ERROR MESSAGE.
                  $("#msg_success").show();
                  setTimeout(function() { $("#msg_error").hide(); }, 5000);
              }else{
                  //SHOW ERROR MESSAGE.
                  $("#msg_error").show();
                  $.each(data.errors, function(key, val) {
      
                      $('[name="'+ key +'"]', form).after(val);
      
                  })
              }
          }, "json");
      

      【讨论】:

      • #msg_success#msg_error 在页面中可能是唯一的,并且他正在使用类来显示错误消息,正如您在他的控制器中看到的那样:'&lt;div class="error"&gt;。问题是当data.status 不正确时,他没有删除他添加的内容......这就是我suggested above 删除那些div.error 的原因。
      猜你喜欢
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多