根据输入更新Django表单

时间:2014-11-29 23:07:41

标签: ajax django forms

我想根据用户选择Type of Event添加更多字段。

根据用户选择添加其他字段而不刷新页面的最佳方法是什么?

当用户点击Add the details并返回html时,我在考虑调用ajax?

有没有办法使用带有一系列if / else条件的模板系统来做到这一点?

enter image description here

1 个答案:

答案 0 :(得分:1)

这里有两种解决方案......

1)

将jQuery更改处理程序附加到'Type of Event'选择元素,并执行ajax请求以返回需要显示的动态字段。

$('#TYPE_OF_EVENT_ID').change(function() {
    $.get('/api/to/return/dynamic/fields/', {'type_of_event': $(this).val()}, function(data, textStatus, jqXHR) {
        # Update DOM with dynamic content return by data (should probably be JSON)
    });
});

2)

将逻辑硬编码到你的javascript中以处理case语句,以显示动态字段,具体取决于在'Event of Event'选择元素中选择的值。

$('#TYPE_OF_EVENT_ID').change(function() {
    switch($(this).val()) {
        case 'Special Event':
            # Show Special Event Fields
        case 'Non Special Event':
            # Show Non Special Event Fields
    }
});

我建议选项1,因为它可以更好地扩展,使服务器上的逻辑保持数据库驱动。