如何在不丢失表单输入的情况下刷新表单中的select选项(Django+jQuery)

2024-06-25 23:05:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有下拉列表的表单。但是,用户可以通过单击新值旁边的按钮来注册它(也可以注册到数据库中)。在

我设法通过AJAX方法注册它。但是,我没有找到刷新下拉列表的方法,以便用户可以选择新插入的值。在

我尝试了location.reload(true),但这将删除现有的表单输入。有没有办法让我只刷新下拉列表,或者刷新而不丢失输入?在

我的JQuery看起来像这样

$('#formSupplier').submit(function(e){
    $('#divProcessingMessage').show();
    $('#divSupplierForm').hide();
    $.post('/item/xhr_reg_supplier/',$('#formSupplier').serializeArray(),        
        function(data){
            if(data){
                alert('Supplier registration successful')
                $('#divProcessingMessage').hide();
                $('#divSupplierForm').show();

                //Clear the form's field
                $('#formSupplier').find(':input').each(function(){
                    switch(this.type) {
                        case 'password':
                        case 'select-multiple':
                        case 'select-one':
                        case 'text':
                        case 'textarea':
                            $(this).val('');
                            break;
                        case 'checkbox':
                        case 'radio':
                            this.checked = false;
                    } 
                });

                $('#supplier_form').hide();
                location.reload(true);
            } else {
                alert('Supplier registration failed')
            }        
        }
    );

我正在使用django1.3.1框架。在


Tags: 方法用户true表单列表showfunctionlocation
2条回答

在处理AJAX请求的视图中,让它重新呈现表单字段并返回HTML。然后在JS回调中,用jquery:$('select[name="thefield"]').replaceWith(data)交换它。如果下拉列表更改时有页面事件触发,则可能需要将事件重新绑定到新插入的DOM片段。在

有三种方法:

document.getElementById('form_id').reset()

或者

^{pr2}$

或者

jQuery.fn.reset = function () {
  $(this).each (function() { this.reset(); });
}

$("#FormID").reset();

相关问题 更多 >