2010-02-19 3 views
2

Considérons le partiel suivant, il est inséré dans une page si quelqu'un clique sur ajax "ajouter un commentaire" lien. La question que j'ai est: est-ce le meilleur endroit pour inclure ce javascript?Où placer partiellement javascript spécifique dans les rails 2.x

Je pensais qu'il était préférable de le mettre dans l'application.js, mais parce que le partiel est ajouté via ajax, la méthode de validation appelée dans le bloc $ (document) .ready ne se déclenche pas car le formulaire n'existe pas le document original est prêt. Cela a-t-il du sens?

En utilisant Rails 2.3.4 et jQuery 1.4.1

Merci!

<%form_for [@commentable,@comment] do |f|%> 
    <%= f.text_area :comment, :class=>"required", :minlength=>2%> 

    <% content_tag :button, :type => :submit do %> 
    Comment 
    <% end %> 
<%end%> 

<script type="text/javascript"> 
    $(document).ready(function(){ 
    $("#new_comment").validate(); 
    }); 
</script> 

Répondre

1

Je ne sais pas quand vous voulez la validation de se produire, mais il semble que vous pouvez utiliser la fonctionnalité live de jquery pour attaquer une méthode valiation définie dans votre application.js au bouton de soumettre partiel entrant.

Je pensais quelque chose le long des lignes de:

$("#new_comment").live('click', function(event) { 
    $(this).validate(); 
    // or maybe event.target.validate(); ? 
}); 
+0

quelle serait la syntaxe de ce? J'ai trouvé http://api.jquery.com/live/ mais je ne sais pas comment l'appliquer dans cette situation. $ ("# new_comment"). live ('valider'); dans application.js ne semble pas fonctionner – Jonathan

+0

C'était la syntaxe que je l'ai eu pour travailler avec: $ ("# new_comment"). live ('click', function() { $ (this) .validate (); }); – Jonathan

+0

Heureux que ça a marché! J'ai mis à jour la réponse pour refléter la syntaxe utilisée. – Chris

Questions connexes