8
votes

Comment définir un gestionnaire d'événements dans un champ de saisie de formulaire Django

Comment définir une fonction JavaScript comme gestionnaire dans l'événement OnClick dans un champ donné de formulaire Django. Est-ce possible?

Tout indice serait apprécié.


0 commentaires

7 Réponses :


5
votes

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 dans votre formulaire Django à l'événement de clic comme: XXX


3 commentaires

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>



2
votes

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. xxx


0 commentaires

20
votes

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 !');",
            }
        )


0 commentaires

1
votes

Utilisation de yui , vous pouvez le faire comme ceci:

YAHOO.util.Event.addListener(id_myField, "click", myClickEventHandler, myOptionalData);


0 commentaires

0
votes

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. xxx

dans mon javascript: xxx


0 commentaires

0
votes

Variation sur un thème:

<script language="javascript">
    $('.mc_payment_type').change(function () {
        console.log('payment type selected: ' + $(this).find('option:selected').val());
</script>


0 commentaires

1
votes

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 !');"})
        }


0 commentaires