2010-11-30 16 views
0

Dans TextField de Ruby Code, je veux vérifier si la classe spécifiée est appliquée ou non, sur un événement de flou. S'il vous plaît suggérer une technique ou un moyen. L'exemple de code est donné ci-dessous utilisé par moi.ROR + Détecter ClassName à partir du champ de texte et le remplacer par un autre

code Ruby pour TextField ::

<%=f.text_field :Username, :size=>4, :tabindex=>2, :class=>class_name, 
:autocomplete => "off", :onblur=> $$$$$ %> 

Suppose nom_classe: 'ChangeView' est appliqué sur textfield ci-dessus, je dois détecter cette classe particulière & remplacer par un autre comme 'changeExtraview'. En utilisant l'un des javascript, nous pouvons remplacer ce nom de classe, mais suggérer si vous avez une meilleure option.

Merci

+0

Ceci est peut-être de code, au lieu de «rails – PeterWong

+0

ami Ya code Ruby, son code rails – Rubyist

+0

C'est une question javascript, pas un rails un. La vérification du flou de champ est un problème côté client, RoR ne peut PAS vous y aider. Retaillé pour refléter cela. – Faisal

Répondre

1

Juste une réponse deviné ...

Ainsi, votre class_name pourrait être contenir une valeur de changeView, et si dans le cas, vous souhaitez remplacer le nom de la classe changeView-changeExtraview, non?

Si elle l'est, ce qui suit devrait être ok:

<%=f.text_field :Username, :size=>4, :tabindex=>2, :class=>class_name.gsub(/changeView/, "changeExtraview"), :autocomplete => "off", :onblur=> $$$$$ %> 

========================

un autre essai:

<%= 
    f.text_field :Username, :size=>4, :tabindex=>2, :class=>class_name, :autocomplete => "off", 
    :onblur => "if($(this).hasClass('changeView')) {$(this).removeClass('changeView'); $(this).addClass('changeExtraview')}" 
%> 

========================

Comme @Faisal a souligné, en utilisant la liaison à côté JS serait être meilleur. Bien que la réponse était il y a longtemps, j'ai décidé de mettre à jour à nouveau réponse:

<%= f.text_field :Username, :size => 4, :tabindex => 2, :class => class_name, :autocomplete => "off" %> 

Et de toutes les façons (j'utilise content_for dans cet exemple), ajoutez le code js suivant:

<%= content_for :javascripts do %> 
    <script type="text/javascript"> 
    jQuery(document).ready(function($) { 
     $("<%= class_name %>").bind("blur", function() { 
     var $this = $(this); 
     if ($this.hasClass('changeView')) { 
      $this.removeClass('changeView'); 
      $this.addClass('changeExtraView'); 
     } 
     }); 
    }); 
    </script> 
<% end %> 

Remarque que le code ci-dessus exige que vous avez <%= yield :javascripts %> dans votre fichier de mise en page,

+0

@PeterWong :: Hey Buddy, Au moment du chargement de la page, changeView sera la classe pour ce champ de texte, mais au moment de l'événement de flou, je veux définir className comme changeExtraview. – Rubyist

+0

Donc, ce n'est pas l'affaire de ROR ...... c'est seulement javascript, non? – PeterWong

+0

Ya je suis d'accord avec vous. Mais est-ce possible dans ROR, alors c'est bien sinon je dois utiliser Javascript !! – Rubyist