【问题标题】:Django Crispy Forms - Add Button via HelperDjango Crispy Forms - 通过 Helper 添加按钮
【发布时间】:2012-04-25 20:46:27
【问题描述】:
我研究了 Crispy-Forms 文档,并尝试在我的一个表单中添加一个额外的按钮。与
self.helper.add_input(Button('back', "Back", css_class='btn'))
我可以添加一个漂亮的按钮。但是 Button() 不会采用 onclick 或 on_click 属性。那么如何为这个按钮添加逻辑呢?使用 JQuery 添加 onclick 事件并不是一个很好的解决方案...
谢谢!
罗恩
【问题讨论】:
标签:
django
forms
button
helper
django-crispy-forms
【解决方案1】:
您确定 Button 不会在其 kwargs 中接受 onclick 吗?
我刚刚在Submit() 元素中添加了一个onclick="javascript here",它显示得很好。
我还仔细研究了底层代码,我认为默认情况下所有输入都会展平由于特殊用途(即模板)而未弹出的 kwarg,并将它们传递到呈现的 HTML 中。这可能是自 12 年 4 月(最初发布时)以来的新内容,但目前似乎很简单,如下所示:
self.helper.add_input(Button('back', "Back", css_class='btn', onclick="alert('Neat!');"))
【解决方案2】:
默认情况下不包括在内(afaik..)。
如果你只需要一次,可以使用crispy-forms HTML Layout Object
HTML('<input type="button" name="Save" onclick="do_whatever" />')
那么你不喜欢使用 jQuery 吗?你可以使用类似这样的东西来处理这个相当简单和通用的:
$('form :submit.ajax_submit').live('click', function(e) {
e.preventDefault();
var my_form = $(this).parents('form');
// do whatever
alert(my_form.attr('id'));
alert(my_form.attr('action'));
});
然后就通过类:
Submit('save', 'save', css_class='ajax_submit')