如何在Django表单输入字段中设置事件处理程序

Ale*_* S. 7 javascript django django-forms

如何在Django Form的给定字段中单击事件中将JavaScript函数设置为处理程序.这可能吗?

任何线索将不胜感激.

Ghi*_*que 14

我为此做的是:

class MyForm(forms.Form):
    stuff = forms.ChoiceField(
        [('a','A'),('b','B')],
        widget = forms.Select(attrs = {
            'onclick' : "alert('foo !');",
            }
        )
Run Code Online (Sandbox Code Playgroud)


Mar*_*vin 5

我建议考虑使用 JavaScript 库,例如 jQuery。 是在 jQuery 中绑定 click 事件的链接。由于 Django 命名了所有输入字段,因此您可以my_field_name在 Django 表单中连接到单击事件,如下所示:

$("form input[name='my_field_name']").click(function () { 
    // Handle the click event here
});
Run Code Online (Sandbox Code Playgroud)


sha*_*nyu 3

如果您正在寻求自动化此过程,您可以为该字段创建一个自定义小部件。在小部件类中,您将定义一个渲染方法,该方法还将返回事件绑定代码。

class CustomWidget(forms.TextInput):

    class Media:
        #js here
        js = ('js/my_js.js',)

    def render(self, name, value, attrs = None)
         output = super(CustomWidget, self).render(name, value, attrs)
         #do what you want to do here
         output += ...
         return output
Run Code Online (Sandbox Code Playgroud)