Php 重新提交后,AJAX再次验证所有字段
我有一个注册表,由CodeIgniter的验证助手处理。如果表单验证返回false,它将以JSON对象的形式返回错误 到目前为止,代码运行得还不错,但每次我尝试使用不同的详细信息重新提交表单时,它只是不断地将相同的错误添加到彼此的顶部,如果我为输入字段键入了正确的值,它不会删除这些错误消息 我需要做的,实际上是在每次按下提交按钮时重新验证表单 这是我现在拥有的 AJAX部分:Php 重新提交后,AJAX再次验证所有字段,php,jquery,ajax,json,codeigniter,Php,Jquery,Ajax,Json,Codeigniter,我有一个注册表,由CodeIgniter的验证助手处理。如果表单验证返回false,它将以JSON对象的形式返回错误 到目前为止,代码运行得还不错,但每次我尝试使用不同的详细信息重新提交表单时,它只是不断地将相同的错误添加到彼此的顶部,如果我为输入字段键入了正确的值,它不会删除这些错误消息 我需要做的,实际上是在每次按下提交按钮时重新验证表单 这是我现在拥有的 AJAX部分: $(document).ready(function() { $("form#signup").on('sub
$(document).ready(function() {
$("form#signup").on('submit', function(e) {
var from = $(this);
$.ajax({
url: from.attr('action'),
type: from.attr('method'),
data: $(from).serialize(),
dataType: 'json',
success: function(data) {
if(data.st == 0) {
for(var key in data.msg) {
// Add class and label with error message after input field
$("form#signup input#" + key).addClass("input-error");
$("form#signup input#" + key).after("<label class='error'>" + data.msg[key] +"</label>");
}
// Shake the register button
$("input#register").shake_it();
} else {
alert("It works!");
}
}
});
e.preventDefault();
});
});
if($this->form_validation->run() == FALSE) {
// If validation returns false, return errors as JSON
$this->output->set_content_type('application_json');
$this->output->set_output(json_encode(array('st' => 0, 'msg' => $this->form_validation->error_array())));
return false;
} else {
// Continue register process
}
您可以删除函数开头的错误消息:
$("form#signup").on('submit', function(e) {
var from = $(this);
$("form#signup input.input-error").removeClass("input-error")
.nextAll(".error")
.remove();
//Ajax call
});
在添加新类之前,应该先删除上一个类。所以加上
$("form#signup input#" + key).removeClass("input-error");
以前
$("form#signup input#" + key).addClass("input-error");
这将删除旧错误并为每次提交添加新的错误消息(如果有)
$("form#signup").on('submit', function(e) {
$("form#signup input").removeClass('input-error'); // REMOVES input-error class from input fields
$(".error").remove(); // Removes all error-spans from form.
var from = $(this);
...
...
第2行和第3行将删除以前验证中的错误,然后再次运行验证