L'appel d'une fonction JavaScript pendant onchange d'une boîte de sélection
De mon point de vue, j'ai le texte suivant:
<%= select("event", :event_id, events_ids_titles_hash, { :include_blank => true, :onchange => "alert_me_test()" }) %>
alert_me_test() est:
<script type="text/javascript">
function alert_me_test()
{
alert ("this is a test")
}
</script>
La liste déroulante qui apparaît bien, mais quand je sélectionne à partir d'elle, rien ne se passe. Je m'attends à une boite d'alerte "ceci est un test".
Le Modifier le cas:
Quand je fais un edit, j'ai le code suivant:
<% if @panel.event_id %>
<%= select("panel", :event_id, events_ids_titles_hash, {:selected => @panel.event_id}, { :include_blank => true}) %>
Mon IDE (RubyMine) ne veulent pas accepter le "onchange" comme un argument supplémentaire, et de le mettre à l'intérieur de l'un des :activée ou :include_blank argument hachages ne produit pas une erreur, mais il ne fonctionne pas non plus
Ce qui a fini par travailler pour les deux nouveaux et edit:
<% if @panel.event_id %>
<%= 'Event is ' + events_ids_titles_hash.key(@panel.event_id) %>
<%= select("panel", :event_id, events_ids_titles_hash, {:selected => @panel.event_id}, { :include_blank => true, :onchange => "alert_me_test()"}) %>
<% else %>
<%= 'Select Event from list' %>
<%= select("event", :event_id, events_ids_titles_hash, { :include_blank => true }, { :onchange => "alert_me_test()" }) %>
<% end %>
OriginalL'auteur EastsideDeveloper | 2012-07-18
Vous devez vous connecter pour publier un commentaire.
A fonctionné pour moi, mais je dois dire que vous vous battez contre-courant avec celui-ci. Rails suit UJS, ce qui signifie que même les gestionnaires devraient être séparé de votre code HTML. Dans ce cas, le select sont les mêmes, moins le onclick et puis le script serait
Vous n'avez pas à faire les choses de cette façon, mais cela le rend plus clair lorsque l'on regarde un script où votre événement appels viennent.
Il a travaillé pour moi. L'édition travaillé ainsi: <%= select("panel": event_id, events_ids_titles_hash, {:selected => @panneau.event_id}, { :include_blank => true, :onchange => "alert_me_test()"}) %> avec une question: l'alerte est appelé deux fois. Des idées?
Je suis en supposant que vous avez utilisé la gestion des événements dans le script. Dans ce cas, vous pouvez supprimer l' :onchange=>"alert_me_test()" de l' :html de hachage. Sinon, ils vont tous les deux être déclenchée.
Dans mon cas, je dois appeler la fonction que je suis en train de monter ou pas (la fonction n'est pas une alerte, mais plutôt un appel Ajax pour le contrôleur). Cela signifie que je ne peux pas utiliser le plus elegent UJS la syntaxe ici (même si j'ai peut-être raté quelque chose, mais je vais faire plus de lecture sur UJS quand j'gratuit)
OriginalL'auteur AdamCooper86
Je crois que vous devez définir la
:onchange
comme un HtmlOption, qui est un paramètre 4e:OriginalL'auteur Matthew Manela