2010-05-05 7 views
0

J'essaie de vérifier qu'un nom de compte n'est pas déjà utilisé une fois qu'un utilisateur a rempli un formulaire. Le code ressemble à:

$("#add_account").submit(function() { 
      $.get(
       "'.url::site("ajax/check_account_name").'", 
      {account_name: "t"}, 
      function(data){ 
       alert(data); 
      }); 
     }); 

Je reçois une réponse de .get $ si la déclaration se trouve comme ceci:

$(document).ready(function() { 
      $.get(
       "'.url::site("ajax/check_account_name").'", 
      {account_name: "t"}, 
      function(data){ 
       alert(data); 
      }); 
     }); 

Ce qui me porte à croire que ma déclaration de .get de $ est correct. Y a-t-il une règle jQuery que je ne connais pas qui ferait échouer le scénario de soumission?

Dans le bloc de code 1, les valeurs sont renvoyées comme elles le devraient. Le bloc 2 me donne une réponse vide.

Des idées? Merci pour votre temps, je sais que vous avez mieux à faire.

+3

'return false;'? – James

+0

Comme J-P l'a dit, 'return false' à la fin de votre gestionnaire de soumission. @ J-P, vous devriez poster cela comme une réponse :) – karim79

+0

ce qui se passe avec le 1er bloc? Essayez .submit (fonction (e) { e.preventDefault(); // reste de votre code }); – Shiki

Répondre

1

Les gestionnaires Javascript se déclenchent avant l'action par défaut de ce que vous avez cliqué. Donc, si vous avez cette déclaration $ .get attachée au bouton de soumission d'un formulaire, l'instruction $ .get se déclenchera avant de soumettre le formulaire via les méthodes du navigateur.

Pour annuler cette action, vous devez inclure return false; à la fin de votre gestionnaire de clic pour annuler l'action par défaut, comme indiqué par J-P. Cela fonctionne aussi pour les liens.

+0

Merci à vous et à J-P. J'apprécie l'explication. Ca a du sens. – bradenkeith

Questions connexes