2017-03-06 3 views
0

J'ai utilisé jQuery Tag-It pour que le champ e-mail soit tagué. J'essaie de vérifier si l'e-mail est valide ou non du côté serveur, dans mon cas, api.php, ce qui rend la réponse comme:jQuery Tag-It événement BeforeTagAdded avec validation par e-mail

{"status": "OK"} 

ou

{"status": "NG"} 

Je voudrais rejeter les emails invalides de l'ajout dans le champ de saisie après vérification, donc j'ai mis un post AJAX à l'appel de l'API. Mais l'événement beforeTagAdded requiert une réponse booléenne immédiate au lieu d'une réponse asynchrone. Voici mon code:

$('input[name=txt_email]').tagit({ 
    beforeTagAdded: function(event, ui) { 
     if(!ui.duringInitialization) { 
      $.post('api.php', { 
       'request': 'check_email', 
       'entry': ui.tagLabel 
      }, function(response) { 
       if(response.status == 'OK') { 
        return true; 
       } else { 
        return false; 
       } 
      }); 
      return false; 
     } 
    }, 
    onTagExists (fn, callback) { 
     return false; 
    } 
}); 

Comment puis-je modifier mon code pour rejeter les codes invalides?


MISE À JOUR Je sais que je peux mettre l'appel AJAX en mode synchrone, mais il est déconseillé car il est mauvais en termes d'expérience utilisateur.

Répondre

0

J'ai également utilisé tag-it pour mon projet, j'espère que cela va résoudre votre problème.

ma solution:

beforeTagAdded: function(event,ui){ 
        var temp = ui.tag.text(); 
        var t11 = testcall(); 
        alert("++++>>>"+t11); 
        return t11 
        } 
function testcall(){ 
    var result = true;//personal choice to set the boolean value 
    $.ajax({ 
      'url':'/app/test',//your own url 
      'type':'POST', 
      'data':{'zx':123},// any data if needed 
      'async':false, // this is important for this task 
      success:function(response,Status,code){ 
        alert("success >>"); 
        result = false 
      }, 
      error: function(jqXHR, exception) { 
        alert("error"); 
        console.log(exception); 
      } 
    }); 
    alert(result); 
    return result; 
} 
+0

Merci, mais comme on dit dans ma question, la mise en mode synchrone pour les appels AJAX (XHR synchrone) est dépréciée. J'ai besoin d'une autre solution. – Raptor