2012-10-29 5 views
1

fn pour créer des fonctions/méthodes avant sans tracas, cependant, j'ai maintenant quelques problèmes. Toute aide serait grandement appréciée :)

$.fn.formClass = function(class) 
{ 

var bad_class = (class=='input_good') ? 'input_bad' : 'input_good'; 
if($(this).hasClass(bad_class))$(this).removeClass(bad_class); 
$(this).addClass(class); 

} 

et je suis en train de l'utiliser dans cette fonction:

function check_username() 
{ 

var username = $('input[name="username"]'); 
if(username.val().length<4||username.val.length>20) 
{username.formClass('input_bad');} 
} 

Le Console.log dit Uncaught TypeError: Object [object Object] n'a pas méthode 'formClass'

Merci d'avance pour toute aide!

+5

'class' est un mot-clé réservé qui ne peut pas être le nom d'un paramètre de fonction. Est-il nommé différemment dans votre code? – mechanicalfish

+0

Le bloc supérieur est-il définitivement appelé avant le bloc inférieur? (en supposant qu'il soit nommé différemment dans votre code et donc en fait * fonctionne *) –

Répondre

6

Je crois que vous devriez obtenir une erreur sur l'utilisation du nom de variable class puisqu'il s'agit d'un mot-clé réservé. Essayez de le renommer en autre chose:

$.fn.formClass = function(class_name) { 
    var bad_class = (class_name=='input_good') ? 'input_bad' : 'input_good'; 
    if($(this).hasClass(bad_class))$(this).removeClass(bad_class); 
    $(this).addClass(class_name); 
} 
+0

Merci beaucoup, TheZ. Cela fonctionne parfaitement! Je vais marquer comme répondu quand cela me permet. :) –

+0

@RossWilson Aucun problème, j'ai ouvert la console et j'ai reçu l'erreur 'SyntaxError: Mot réservé inattendu'. 'class' sonnait comme le candidat le plus évident donc un simple' var class = "test" 'jeter l'erreur était tout ce dont j'avais besoin pour confirmer :) – TheZ