0
因与jQuery的一个小问题,不知道是否有人能帮助jQuery的AJAX验证不运作提交
我有一个表格,其中我对模糊
$('form#setAdminUser :input').blur(function() {
var $item = $(this);
var $itemWrapper = $(this).parent();
$itemWrapper.find('input').removeClass('errorRow').end()
.find('span').remove();
// There are other validation rules here I have ommitted..
// Email validation
if (this.id == 'sEmail') {
// Email Unique
if (this.value != '') {
var errorMessage = 'Checking availability';
var emailData = {sEmail: itemValue}
$.getJSON('http://localhost:8501/ems/trunk/www/cfcs/admin_user_service.cfc?method=getAdminUser&returnFormat=json&queryformat=column', emailData,
function(data){
if (data != false) {
var errorMessage = 'This email address has already been registered';
$itemWrapper.find('span').text(errorMessage).addClass('errorInfoFalse').removeClass('errorInfoTrue');
$item.addClass('errorRow');
}
else {
var errorMessage = 'Good';
$itemWrapper.find('span').text(errorMessage);
$item.removeClass('errorRow');
}
})
}
}
这工作得很好验证,并检查表单中添加的电子邮件地址是否已经在数据库中。如果是这样,显示错误,如果没有事情进展。
然后,我通过在验证字段上触发模糊,再次在表单提交中调用此验证。
$('#setAdminUser').submit(function(){
$('#submitMessage').remove();
$(':input.conditional').trigger('blur');
$(':input.text_field').trigger('blur');
var numWarnings = $('.errorRow',this).length;
if (numWarnings) {
// Show error messages
}
else {
// Everything is fine, create User
}
return false
})
如果任何其它字段是无效的,而电子邮件字段是无效的,例如密码太短,或字段留空,则提交表单时,在上模糊验证调用。显示所有错误,包括电子邮件,并且用户不被创建。
然而,如果仅的电子邮件字段是无效的,误差不显示和用户创建。我猜这是因为电子邮件验证是一个Ajax调用,这发生得太慢了?有任何想法吗?谢谢
酷,感谢您的解释,我认为这可能是Ajax调用这是造成问题的原因。将改变代码以包含此内容。 – namtax 2010-01-11 14:30:50
刚刚意识到这个选项的问题。当我提交表单时,如果从getJSON验证返回任何错误,那么如何将其显示给用户? – namtax 2010-01-11 17:23:36
您应该返回JSON中的错误消息。基本上是这样的: {“errors”:{“email”:[“无效的电子邮件地址。”,“另一个验证错误。”],“other_field”:[“Some error。”}} – 2010-01-12 07:31:24