2010-10-05 5 views
2

http://www.therapistsurvey.com/vignette0/vig01Validation Jquery & Problèmes de conflit avec Prototypes.js?

Notez que lorsque vous cliquez sur la réponse de Voir les parents, le lien déclenche un javascript qui affiche une div Ceci est fait en utilisant les lignes suivantes:

<%= javascript_include_tag :defaults %> 
<%= link_to_function "Click to See Parents' Response: ", "Element.toggle('response')" %> 



<div id="response" style="display:none"> 

    //input 
    <%= button_to "Next", :action => 'vig02' %> 
</div> 

Cependant, dans ma principale disposition de modèle J'ai inclus les bibliothèques jquery suivantes:

<script src="http://code.jquery.com/jquery-latest.js"></script> 
<%= javascript_include_tag 'jquery-1.4.2', 'jquery.validate', 'application' %> 

Cela désactivera fondamentalement cette action. J'ai besoin de ces bibliothèques pour la validation de jquery.

Je suppose qu'il y a quelques problèmes de comparabilité avec l'utilisation de ces deux bibliothèques en même temps.

Si votre utilisation de chrome et d'inspecter les éléments de la page, vous verrez une erreur générée:

Lorsque vous chargez la page:

Uncaught TypeError: Object #<an Object> has no method 'dispatchEvent' prototype.js:4071 

jamais fois que vous cliquez sur le lien:

Uncaught TypeError: Cannot read property 'display' of undefined 
Element.Methods.visibleprototype.js:1579 
Element.Methods.toggleprototype.js:1584 
(anonymous function)vig01:59 
onclickvig01:60 

Des conseils sur la façon de résoudre ce problème? Merci!

Répondre

1

juste utilisé la bibliothèque JQuery:

 <button>Click to See Parents' Response</button> 
    <script> 
     $("button").click(function() { 
     $("#response").toggle(); 
     }); 
     </script> 

Où #response est l'id de la div que vous voulez afficher/cacher.

0

jquery doit être chargé avant prototype

2

Non seulement doit jQuery être chargé avant que prototype.js user553463 says (ceci est réalisé en mettant la ligne <script ... jquery plus dans le code HTML dans le cas où vous ne connaissez pas), mais lors de l'utilisation jQuery avec prototype.js vous ne pouvez plus utiliser la syntaxe $(selector) et devez plutôt utiliser jQuery(selector) à la place comme prototype.js utilise également $.