我在google上搜索了很多这个问题。我在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));
我的问题是“如果没有错误,我需要清除所有旧的错误消息”
答案 0 :(得分:0)
如果要清除控制台,只需在成功块内使用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);
} ...
编辑:我更改了选择器以使您的元素与错误匹配。
答案 1 :(得分:0)
请参阅下面的代码。我已将我的评论纳入所有CAPS。
描述:您应该有两个不同的元素来显示成功和错误消息。然后,当出现错误时显示错误消息,例如空字段,并在成功时隐藏错误消息,如果需要也显示成功消息。如果您想要有多个错误消息,例如,如果有重复错误并且您想要堆叠错误消息,那么您不应该使用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");