Comment définir une fonction JavaScript comme gestionnaire dans l'événement OnClick dans un champ donné de formulaire Django. Est-ce possible? P>
Tout indice serait apprécié. P>
7 Réponses :
Je recommanderais de regarder à l'aide d'une bibliothèque JavaScript telle que JQuery. ici est le lien à lier l'événement de clic dans jQuery. Étant donné que Django nomme tous les champs de saisie que vous pouvez connecter my_field_name code> dans votre formulaire Django à l'événement de clic comme:
Je ne vois pas vraiment comment il y a une relation avec Django
Assez juste. La seule relation avec Django Voici comment Django nomme les champs de saisie en fonction des noms utilisés sur le formulaire déclaratif pour obtenir la liaison correcte. Globalement, ce n'est pas vraiment une question de Django. C'est une question JS.
C'est une question de Django sur la façon d'ajouter les JS-Events et ce gars ici a répondu joliment: Stackoverflow.com/a/1879919/2516892 < / a>
Si vous recherchez un automatisation de ce processus, vous pouvez créer un widget personnalisé pour le champ. Dans la classe widget, vous définirez une méthode de rendu de manière à renvoyer également le code de liaison des événements.
Ce que je fais pour cela est:
class MyForm(forms.Form): stuff = forms.ChoiceField( [('a','A'),('b','B')], widget = forms.Select(attrs = { 'onclick' : "alert('foo !');", } )
Utilisation de yui , vous pouvez le faire comme ceci:
YAHOO.util.Event.addListener(id_myField, "click", myClickEventHandler, myOptionalData);
J'ai pris une approche JQuery en utilisant la réponse de Ghislain Leveque. De cette façon, j'ai pu déclencher le gestionnaire d'événements sur la charge de la page. dans mon javascript: p>
Variation sur un thème:
<script language="javascript"> $('.mc_payment_type').change(function () { console.log('payment type selected: ' + $(this).find('option:selected').val()); </script>
Le Ghislain Leveque Répondre m'unie, mais à Django 1.9, je l'ai fait comme suit:
class myForm(forms.ModelForm): class Meta: model = USER fields = ["password", "idCity"] widgets = { "password": forms.PasswordInput(), "idCity": forms.Select(attrs={'onchange': "alert('foo !');"}) }