2013-03-14 18 views
6

Sto provando a convalidare la disponibilità di un sottodominio con jQuery Validate Engine tramite una funzione personalizzata. La convalida sembra avvenire correttamente ma il messaggio di avviso non viene visualizzato se la richiesta .ajax restituisce 200. Ho aggiunto intestazioni Access-Control-Allow-Origin e posso vedere la richiesta completare correttamente nei miei registri.validazione javascript del motore di convalida jQuery

Cosa sto sbagliando?

funzione javascript:

function validateDomain(field, rules, i, options) { 
    var url = "https://" + field.val() + ".example.com/"; 
    $.ajax(url, 
     { 
      statusCode: { 
       200: function() { 
        //alert('name exists already'); 
        return options.allrules.validate2fields.alertText; 
       } 
      } 
     }); 
} 

Campo modulo:

<label class="required" for="signup[subdomain]">Subdomain<span>*</span></label> 
    <span>https://</span> 
    <input id="signup[subdomain]" name="signup[subdomain]" class="field field validate[required,funcCall[validateDomain]]" type="text"> 
    <span>.example.com</span> 
+0

puoi aggiungere un gestore di errori e vedere se viene eseguito, il mio dubbio è che si sta verificando un errore di analisi –

+2

sembra un duplicato di [Come restituire la risposta da una chiamata AJAX da una funzione?] (Http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call-from-a-function) – Bergi

+1

Hai taggato questo entrambi [tag: jquery-validate] e [tag : jquery-validation-engine] eppure questi sono due plugin completamente diversi. Quale stai usando veramente? – Sparky

risposta

0

Il problema è che $.ajax è una funzione asincrona e non funzionano in questo modo.

function validateDomain(field, rules, i, options) { 
    var url = "https://" + field.val() + ".example.com/"; 
    $.ajax(url, 
     { 
      statusCode: { 
       200: function() { // [ second function ] 
        return options.allrules.validate2fields.alertText; 
       } 
      } 
     }); 
} 

Il problema è: il ritorno è solo per la non [second function] per validateDomain.

Guardando i documenti di jquery-validation-engine Non riesco a vedere un modo per fare ciò che vuoi.

Problemi correlati