Práce s WTForms seznamu polí

hlasů
11

Používám WTForms s Baňka prostřednictvím rozšíření Flask.WTF. Tato otázka není Baňka specifické, ačkoli.

WTForms obsahuje FieldListpole pro seznamy polí . Chtěl bych použít, aby se formulář, kde uživatelé mohou přidat nebo odebrat položky. To bude vyžadovat nějaký druh rámce Ajax dynamicky přidávat widgety, ale dokumentace WTForms nezmiňuje o tom.

Mezi další programy, jako je deformovat přicházejí s podporou Ajax . Je tam podobná rámec k dispozici WTForms?

Položena 14/05/2011 v 09:10
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

Z vašeho popisu, nevidím důvod, proč je obzvláště zapotřebí Ajax, ale samozřejmě, že potřebujeme logiku JavaScript přidat / odebrat řádky. Jsem realizován tuto funkci pomocí WTForms, ale s žádnou speciální podporu ze sebe WTForms; stačí, aby se při vytváření na straně klienta widgety, to vy používáte názvy polí, které budou WTForms analyzují správně do seznamu na straně serveru. Můžete naklonovat existující řádek pomocí JavaScript na straně klienta přidat řádky, takže vykreslování řádku je konzistentní napříč řádků generovaných na straně serveru a řádků vytvořených na straně klienta.

Odpovězeno 16/05/2011 v 05:50
zdroj uživatelem

hlasů
6

Použil jsem něco podobného s mým seznamu polí / FormField umožní přidat další položky:

$(document).ready(function () {
    $('#add_another_button').click(function () {
        clone_field_list('fieldset:last');
    });
});

function clone_field_list(selector) {
    var new_element = $(selector).clone(true);
    var elem_id = new_element.find(':input')[0].id;
    var elem_num = parseInt(elem_id.replace(/.*-(\d{1,4})-.*/m, '$1')) + 1;
    new_element.find(':input').each(function() {
        var id = $(this).attr('id').replace('-' + (elem_num - 1) + '-', '-' + elem_num + '-');
        $(this).attr({'name': id, 'id': id}).val('').removeAttr('checked');
    });
    new_element.find('label').each(function() {
        var new_for = $(this).attr('for').replace('-' + (elem_num - 1) + '-', '-' + elem_num + '-');
        $(this).attr('for', new_for);
    });
    $(selector).after(new_element);
}

Odebrat tlačítka by bylo mnohem složitější.

(Code většinou půjčil si od odpovědi na dynamicky přidávat formuláře k Django formset s Ajax ).

Odpovězeno 06/12/2011 v 07:08
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more