Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Comment appeler une fonction JS contenue dans un fichier JS depuis forms.py (par widget)?

0 votes

forms.py

class SelectProdInjectForm(forms.ModelForm):
        ...
        qte_output = forms.ChoiceField([('0',0),...],widget = forms.Select(attrs = {'class': 'form-control col-sm-1',
                                                                         'onchange': "product_price(this);",}))
        ...

        class Meta:
            ...
        class Media:
            js = ('consult/js/injection.js',)

Ma fonction product_price() est contenue dans static/consult/js/injection.js

injection.js

(function ($) {

    function  product_price($elem) {
        var selector = '#'+$elem.id;
            qte_selected = $elem.value;
        var indice = function () {
                var cellAndRow =$(selector).parents('td,tr');
                    cellIndex = cellAndRow[0].cellIndex;
                    rowIndex = cellAndRow[1].rowIndex;
                return (rowIndex -1).toString();

        };
        var test_prix = 100;
        var total_amount= parseFloat(test_prix) * parseFloat(qte_selected);

        $('#id_output_product_set-'+indice.toString()+'-total_price_product').val(total_amount.toString());

    }

};

Si je définis cette fonction dans mon fichier HTML entre les balises , pas de problème! Ca fonctionne très bien.
Mais je ne sais pas appeler cette fonction si elle est dans un fichier JS.

Ma console m'indique qu'il ne trouve pas la fonction productprice.
Mon fichier JS est bien chargé.
Comment dois-je écrire :widget = forms.Select(attrs = {'class': 'form-control col-sm-1', 'onchange': "appel de product
price contenue dans injection.js;",}) ?

demandé 2-Aou par Victor (218 points)

Votre réponse

Preview

Votre nom à afficher ( en option ):
Vie privée: . Votre adresse de messagerie ne sera utilisée que pour l'envoi de ces notifications .
Vérification anti -spam:
Pour éviter cette vérification à l'avenir, Connectez vous ou inscrivez vous.
...