2016-06-13 3 views

ответ

0

Нравится? http://www.web2py.com/books/default/chapter/29/11/jquery-and-ajax#Conditional-fields-in-forms

Я хочу добавить что-то похожее на веб-приложение, у меня нет кода, чтобы показать атм, потому что это не мой первый приоритет, существуют различные таблицы, связанные, и я думаю, что мне нужно будет использовать SQLFORM.factory с настраиваемыми полями set to css display: none по умолчанию. Затем я буду использовать jquery, чтобы показать их по требованию и, в конечном итоге, написать все в DB.

Но пример в книге кажется хорошим способом начать изучение.

Во всяком случае, если поля как в полях формы попробуем это ...

Это в модели:

db.define_table("people", Field("person", "string"), format='%(person)s') 

Это в контроллере:

def add_person(): 
    form = SQLFORM.factory(db.people, 
     buttons=[INPUT(_type = 'submit', _name = 'submit', 
       _value = 'Submit', _class = "btn-submit"), 
       INPUT(_type = 'button', _value = 'Add field', 
       _onClick = "$('<input type=text>').insertAfter(':input.string');", 
       _class = "btn-warning")]) 
    if form.process().accepted: 
     #do something 
     pass 
    elif form.errors: 
     response.flash = 'Errors on form' 
    return dict(form=form) 

Код выше добавляет поля динамически, но затем кажется сложным для получения значений и вставки в базу данных, я полагаю, это то, что вы хотите сделать.

Я думаю, что следующее решение должно работать, просто передайте количество необходимых полей в качестве аргумента, и на submit вставьте все их.

Если я не понял ваш запрос, объясните лучше, пожалуйста.

def add_person(): 
    fields = [] 
    for i in range(int(request.args(0) or 1)): 
     fields.append(Field('person ' + str(i), 
         default='text ' + str(i))) 

    form = SQLFORM.factory(*fields) 
    if form.process().accepted: 
     fields = [item[1] for item in form.vars.iteritems() 
        if item[0].startswith('person')] 
     for field in fields: 
      db.people.insert(person=field) 
    return dict(form=form) 
+0

Нет. На самом деле я хочу добавить список людей. Поэтому мне нужна кнопка с знаком +, и когда я нажимаю, она динамически добавляет поля в форму. – user6063278

+0

Теперь я думаю, что больше не понимаю ... Скажите, что у вас есть стол, называемый людьми с полем, называемым человеком. Каждый раз, когда вы добавляете человека в таблицу, вы создаете запись record1, record2 ... recordn. Это? Вы хотите добавить сразу несколько человек (записей)? – dido

+0

Ответ отредактирован, мне очень нравится гибкость web2py ... – dido

0

U наклоняет добавить автоматически поля к form.It должен быть сделан вручную поля («Имени», ярлык = «», виджет = «»). Таким образом, и можно добавлять поля в форме

Смежные вопросы