2012-06-24 1 views
1

Il existe une autre façon d'écrire ce code? Je pense que c'est un peu professionnel et désordonnéNettoyage/Refactoring Jquery liaison d'événements pour éviter la duplication possible

Fondamentalement, le code soumettre un formulaire par "Entrée clé" et la souris "Cliquez" donc il y a une autre façon?

$("#form-signup-login input#login-submit").click(function() 
{ 
    doLogin(); 
}); 
$('input#login-request-username-email, input#login-request-password').keyup(function(e){ 
    if(e.keyCode == 13) 
     doLogin(); 
}); 

Merci pour votre temps!

+3

Pourriez-vous élaborer sur ce que vous trouvez «non professionnel» et «désordonné» dans ce code? –

+2

Il me semble parfaitement cromulent. –

+0

@JulienBourdon Je pensais que peut-être il y a une fonction pour faire ce togheter et pas avec ces 2 fonctions: click and key –

Répondre

0
$("#login-submit").click(doLogin); 

$('#login-request-password').keyup(function(e){ 
    if(e.keyCode === 13) 
     doLogin(); 
}); 

Explication:

  1. Pas besoin de préfixer sélecteurs d'identification avec des conteneurs car ils sont uniques sur la page et vous fallback la méthode getElementById native qui est plus rapide que le moteur de grésillement.
  2. Vous pouvez simplement utiliser le pointeur de fonction dans le premier cas, pas besoin de construire une autre fonction de rappel
  3. Je voudrais simplement lier l'événement keyup sur le champ de mot de passe plutôt que le champ nom d'utilisateur car il y a un flux natual il

forme alternative bind soumettre qui prend soin de tout cela par défaut pour vous ..

$("#form-signup-login").submit(doLogin); 
+0

c'est ce que je voulais dire. Je vous remercie ! –

0

Il semble que vous voulez faire sur soumettre: pourquoi ne pas utiliser:

$("#form-signup-login").on("submit", function() { 
    doLogin(); 
    return false; 
}); 

Lorsque l'id est l'ID de la forme, et non l'une des entrées.

+0

J'utilise ajax pour soumettre le formulaire. J'ai oublié de préciser ... –

+0

Ah. Cela pourrait encore fonctionner, même si ma mémoire est peut-être rouillée. –

0
$("#form-signup-login").submit(function (ev){ 
    // Do not let the browser handle the submit action 
    ev.preventDefault(); 
    // Execute your custom submit function 
    doLogin(); 
}); 

Voila!

Questions connexes