jquery ajax-php:错误消息未显示在它后面的其他空输入字段上';更新
我正在尝试使用jquery和ajax为我的注册表验证post数据,其中每个输入字段下面都会显示一条错误消息。我最初设法得到了错误消息。但是,当使用输入更新某些空字段时,错误消息不会显示在剩余的空字段中。请有人指出,如果有任何问题,下面的脚本jquery ajax-php:错误消息未显示在它后面的其他空输入字段上';更新,php,jquery,ajax,Php,Jquery,Ajax,我正在尝试使用jquery和ajax为我的注册表验证post数据,其中每个输入字段下面都会显示一条错误消息。我最初设法得到了错误消息。但是,当使用输入更新某些空字段时,错误消息不会显示在剩余的空字段中。请有人指出,如果有任何问题,下面的脚本 <script type="text/javascript"> $(document).ready(function(){ $('#reg-form').submit(function(event){ // stop re
<script type="text/javascript">
$(document).ready(function(){
$('#reg-form').submit(function(event){
// stop refreshing the page
event.preventDefault();
$('.reg_form').removeClass('has-error'); // remove the error class
$('.localError').remove(); // remove the error text
$('#response').html("<b>Processing your info..</b>");
var formMessages = $('#response');
var form = $('#reg-form');
var formData = $(this).serialize();
$.ajax({
type: 'POST',
url: $(form).attr('action'),
data: formData,
dataType: 'JSON'
})
.done(function(data){
// log data to the console
console.log(data);
if (data !== '') {
// handle errors for username
if (data.username) {
$('#username-div').addClass('has-error'); // add the error class to show red input
$('#username-div').append('<div class="localError">' + data.username + '</div>'); // add the actual error message under our input
}
// handle errors for password ---------------
if (data.password) {
$('#password-div').addClass('has-error'); // add the error class to show red input
$('#password-div').append('<div class="localError">' + data.password + '</div>'); // add the actual error message under our input
}
// handle errors for conf_pass ---------------
if (data.conf_pass) {
$('#conf_pass-div').addClass('has-error'); // add the error class to show red input
$('#conf_pass-div').append('<div class="localError">' + data.conf_pass + '</div>'); // add the actual error message under our input
}
}
else {
//Turn the response alert into a success alert
$('#response').addClass('alert-success');
$('#response').removeClass('alert-error');
//Add the success message text into the alert
$('#response').html("<i class='success'></i> Form validated successfully!").fadeIn();
}
})
.fail(function() {
// just in case posting your form failed
alert( "Error.." );
});
return false;
});
});
</script>
$(文档).ready(函数(){
$(“#注册表格”)。提交(功能(事件){
//停止刷新页面
event.preventDefault();
$('.reg_form').removeClass('has-error');//删除错误类
$('.localError').remove();//删除错误文本
$('#response').html(“处理您的信息…”);
var formMessages=$(“#响应”);
变量形式=$(“#注册表形式”);
var formData=$(this.serialize();
$.ajax({
键入:“POST”,
url:$(form.attr('action'),
数据:formData,
数据类型:“JSON”
})
.完成(功能(数据){
//将数据记录到控制台
控制台日志(数据);
如果(数据!=''){
//处理用户名的错误
if(data.username){
$('#username div').addClass('has-error');//添加error类以显示红色输入
$('#username div').append(''+data.username+'');//在输入下添加实际的错误消息
}
//处理密码错误---------------
if(data.password){
$('#password div').addClass('has-error');//添加error类以显示红色输入
$('#password div').append(''+data.password+'');//在输入下添加实际的错误消息
}
//处理conf_pass的错误---------------
if(data.conf_pass){
$('#conf_pass-div').addClass('has-error');//添加error类以显示红色输入
$('#conf_pass-div').append(''+data.conf_pass+'')//在输入下添加实际的错误消息
}
}
否则{
//将响应警报转换为成功警报
$('#response').addClass('alert-success');
$('#response').removeClass('alert-error');
//将成功消息文本添加到警报中
$('#response').html(“表单验证成功!”).fadeIn();
}
})
.fail(函数(){
//以防你的表格发布失败
警报(“错误”);
});
返回false;
});
});
regsiter.php
<div id="reg">
<!-- where the response will be displayed -->
<div id='response'></div>
<form action="register-handler.php" method="POST" id="reg-form">
<div id='username-div' class='reg_form'>
<label for="username" >Username:</label></br>
<input type="text" name="username" id="username" autocomplete="off">
</div>
<div id='password-div' class='reg_form'>
<label for="password" >Password:</label></br>
<input type="password" name="password" id="password" >
</div>
<div id='conf_pass-div' class='reg_form'>
<label for="conf_pass" >Confirm Password:<label></br>
<input type="password" name="conf_pass" id="conf_pass" >
</div>
<div></div>
<input type="hidden" name="token" value="<?php echo Token::generate(); ?>">
<input type="submit" value="submit"></td>
</form>
</div>
用户名:
密码:
确认密码:
validate.php
<?php
class Validate {
private $_passed = false,
$_errors = array()
public function check($source, $items = array()) {
foreach ($items as $item => $rules) {
foreach ($rules as $rule => $rule_value) {
$value = trim($source[$item]);
$item = escape($item);
if ($rule === 'required' && empty($value)) {
$this->addError($item, "{$item} is empty");
} else if (!empty($value)) {
switch ($rule) {
case 'min':
if (strlen($value) < $rule_value) {
$this->addError($item, "{$item} must be a minimum of {$rule_value} characters.");
}
break;
case 'max':
if (strlen($value) > $rule_value) {
$this->addError($item, "{$item} must be a maximum of {$rule_value} characters.");
}
break;
case 'matches':
if ($value != $source[$rule_value]) {
$this->addError($item, "{$rule_value} must match {$item}");
}
break;
}
}
}
}
if (empty($this->_errors)) {
$this->_passed = true;
}
return $this;
}
private function addError($key, $error) {
$this->_errors[$key] = $error;
}
public function errors() {
return $this->_errors;
}
public function passed() {
return $this->_passed;
}
}
?>
您在validationhi中使用的php代码,Islam Zedan。我已经包含了从phpacademy教程中编辑的相关php代码。有什么评论吗?
<?php
class Validate {
private $_passed = false,
$_errors = array()
public function check($source, $items = array()) {
foreach ($items as $item => $rules) {
foreach ($rules as $rule => $rule_value) {
$value = trim($source[$item]);
$item = escape($item);
if ($rule === 'required' && empty($value)) {
$this->addError($item, "{$item} is empty");
} else if (!empty($value)) {
switch ($rule) {
case 'min':
if (strlen($value) < $rule_value) {
$this->addError($item, "{$item} must be a minimum of {$rule_value} characters.");
}
break;
case 'max':
if (strlen($value) > $rule_value) {
$this->addError($item, "{$item} must be a maximum of {$rule_value} characters.");
}
break;
case 'matches':
if ($value != $source[$rule_value]) {
$this->addError($item, "{$rule_value} must match {$item}");
}
break;
}
}
}
}
if (empty($this->_errors)) {
$this->_passed = true;
}
return $this;
}
private function addError($key, $error) {
$this->_errors[$key] = $error;
}
public function errors() {
return $this->_errors;
}
public function passed() {
return $this->_passed;
}
}
?>