所以我用PHP和jQuery创建了这个表单验证器。 PHP代码将检查表单,然后返回包含错误字段的数组。示例:{“email”:1,“password”:1}
但现在我担心是否找不到错误。这里的问题是我在代码的末尾包含了“return false”以防止页面重定向。我已经读过这是一个糟糕的代码实践,但没有找到另一种按预期工作的方式。
第二个问题是如何将o-array传递给$('input')。每个函数。现在它会说所有表格都是有效的,因为什么都没有通过。如果我使用$ .post而不是$ .ajax,则由于某种原因,这个范围问题不会出现。
jQuery的:
$(function() {
$('#register').submit(function() {
var url = $(this).attr('action');
var data = $(this).serialize();
$.ajax({
type: 'GET',
url: url,
data: data,
success: function(o) {
console.log(o);
$('input').each(function() {
var msgId = o[$(this).attr('name')];
console.log(o[$(this).attr('name')]);
if (msgId > 0) {
$('#listError').css('visibility', 'visible');
$('#listError').append('<li>' + $(this).nextAll('span.msg').eq(msgId - 1).text() + '</li>');
$(this).addClass('invalid');
} else if (msgId != 0) {
$(this).addClass('valid');
}
$('#listError').append('</ul>');
})
}
}, 'json');
return false;
});
});
答案 0 :(得分:0)
拳头,你真的不想要的时候为什么要提交表格?!改为使用按钮,从其点击处理程序发出AJAX请求。
$('#registerButton').click(function() {
var form = $('#register')
var data = form.serialize();
$.ajax(...);
});
“第二个问题是如何将o-array传递给$('input')。每个”
这是什么问题?如果成功回调中有each()
,则可以使用传递给回调的data
参数(或者在您的情况下为o
)。(/ p) >
答案 1 :(得分:-1)
试试这个
$(function() {
$('#submit_button_id').click(function() {
var url = $(this).attr('action');
var data = $(this).serialize();
var ret = true;
$.ajax({
type: 'GET',
url: url,
async: false,
data: data,
success: function(o) {
console.log(o);
$('input').each(function() {
var msgId = o[$(this).attr('name')];
console.log(o[$(this).attr('name')]);
if (msgId > 0)
ret = false;
$('#listError').css('visibility', 'visible');
$('#listError').append('<li>' + $(this).nextAll('span.msg').eq(msgId - 1).text() + '</li>');
$(this).addClass('invalid');
} else if (msgId != 0) {
$(this).addClass('valid');
}
$('#listError').append('</ul>');
})
}
}, 'json');
if(ret==true){
$('#register').submit();
}
});
});