2016-06-13 44 views

回答

0

是否這樣? http://www.web2py.com/books/default/chapter/29/11/jquery-and-ajax#Conditional-fields-in-forms

我想類似的東西添加到Web應用程序,我沒有代碼,自動櫃員機顯示,因爲不是我的首要任務,也牽涉到不同的表,我想我會需要使用自定義字段的SQLFORM.factory設置爲css display:默認沒有。然後,我將使用jquery按需顯示它們,並最終將所有內容寫入數據庫。

但書中的例子似乎是一種開始探索的好方法。

無論如何,如果在表單字段的字段試試這個...

這一個模型:

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) 

上面的代碼加場動態,但似乎複雜的檢索值並插入數據庫中,我想這就是你想要做的。

我認爲下面的解決方案應該工作,只需傳遞所需字段的數量作爲參數,並在提交將插入所有他們。

如果我還沒有理解您的請求,請更好地解釋。

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

ü不能自動將字段添加到form.It應該做的手工 字段(「名稱」,標籤=「」,窗口小部件=「」),這樣ü可以添加字段到窗體

相關問題