web2py: выпадающий sqlform без действий отправки и формы
Это немного за пределами моего понимания web2py и SQLFORMS. У меня есть 5 отдельных именованных выпадающих SQLFORMS, которые обращаются к той же информации таблицы базы данных. Я хочу, чтобы пользователь просто выбрал опцию в выпадающем списке, и это была бы кнопка без отправки. Когда они выбирают опцию, я хочу, чтобы на странице было сгенерировано другое выпадающее меню SQLFORMS.
Вот код:
def deck():
form1 = SQLFORM.factory(Field('cards', requires=IS_IN_DB(db, 'tbl_card.id', '%(name)s', orderby=db.tbl_card.id)))
form1.process(formname='form1')
form2 = SQLFORM.factory(Field('cards', requires=IS_IN_DB(db, 'tbl_card.id', '%(name)s', orderby=db.tbl_card.id)))
form2.process(formname='form1')
form3 = SQLFORM.factory(Field('cards', requires=IS_IN_DB(db, 'tbl_card.id', '%(name)s', orderby=db.tbl_card.id)))
form3.process(formname='form1')
form4 = SQLFORM.factory(Field('cards', requires=IS_IN_DB(db, 'tbl_card.id', '%(name)s', orderby=db.tbl_card.id)))
form4.process(formname='form1')
form5 = SQLFORM.factory(Field('cards', requires=IS_IN_DB(db, 'tbl_card.id', '%(name)s', orderby=db.tbl_card.id)))
form5.process(formname='form1')
#form = SQLFORM.factory(Field('evo', requires=IS_IN_DB(db, 'tbl_evo.id', '%(evo_type)s', orderby=db.tbl_evo.id)))
#form2.process(formname='form2')
return dict(form1=form1,form2=form2,form3=form3,form4=form4,form5=form5)
Как мне удалить кнопку отправки?
Как создать действие или создать раскрывающуюся SQLFORM на основе выбранной опции?
огромное спасибо
1 ответ
Если у тебя есть DAL
стол, который включает в себя Field
с IS_IN_DB
или же IS_IN_SET
валидатор как его атрибут "require", когда вы создаете SQLFORM на основе этой таблицы, поле будет представлено с <select>
элемент. Например:
db.define_table('mytable', Field('myfield',
requires=IS_IN_DB(db, 'othertable.otherfield')))
form = SQLFORM(db.mytable)
Выше будет сгенерирована полная HTML-форма, включая кнопку отправки. Если вы не хотите всю форму, а просто хотите <select>
Элемент для определенного поля, у вас есть два варианта:
Извлеките элемент из полной формы:
select = form.element('select[name=myfield]')
Кроме того, вы можете пропустить создание полной формы и просто создать элемент select:
select = SQLFORM.widgets.options.widget(db.mytable.myfield,
db.mytable.myfield.default)
Когда у вас есть элемент select на странице, вы можете использовать Javascript, чтобы обнаружить выборки и выполнить любое действие, которое вы хотите:
<script>
jQuery('select[name=myfield]').on('change', function() {
[do something here]
});
</script>