I did the following method using the xeditable library:
$('[data-id]').on('click',function(e) {
e.stopPropagation();
var _self = $(this);
var id = _self.data('id');
var editableElement = $('.item_editable_'+id+'.editable');
editableElement.editable('toggleDisabled');
var classe='';
if (!editableElement.hasClass('editable-disabled')) {
classe = 'active';
}
$(this).attr('class', classe);
$('#username_'+id).editable({
url: 'api/salvar-usuario',
pk: {
id: id,
csrf_token: csrf,
type: 'username'
},
validate:function(value){
if ($.trim(value) == '' || $.trim(value).length < 4 ) {
return 'Preencha um nome de usuário de até no mínimo 4 caracteres.';
}
var expSpace = /\s/g;
if ($.trim(value).match(expSpace)) {
return 'O nome de usuário não pode conter espaços';
}
var exp = /^[a-zA-Z0-9_]{4,150}/g;
if (!exp.exec($.trim(value))) {
return 'Preencha um nome de usuário válido de até 4 caracteres.';
}
var verifyUser;
var checkU = false;
verifyUserExist($.trim(value), function(data) {
verifyUser = data;
checkU = true;
});
console.log(verifyUser)
if (verifyUser && checkU) {
return 'Este nome de usuário está em uso.';
}
},
success: function (response, newValue) {
//console.log(newValue);
if (response.status != '1') {
$('#error_display').removeClass('hidden')
.html(layoutErrors(response));
} else {
$('#error_display').addClass('hidden')
}
}
});
});
I have a verification method that is returning true or false :
function verifyUserExist(username, callback) {
var urlVerify = "api/verify-user";
return $.ajax({
url: urlVerify,
type: "POST",
dataType: 'json',
data: {
usuario: username,
csrf_token: csrf
}
}).done(function (data) {
callback(data.existUser);
});
}
The problem occurs that I am not able to return inside the xeditable validate. Well it's a closure function, how can I do to send out this validation?