2016-06-13 3 views

답변

0

좋아요? 나는 웹 애플리케이션에 유사한 무언가를 추가 할 http://www.web2py.com/books/default/chapter/29/11/jquery-and-ajax#Conditional-fields-in-forms

, 내 첫 번째 우선 순위가 아니기 때문에 내가 관여 다른 테이블이 있습니다, 기압 표시 할 코드가없고, 나는 사용자 정의 필드를 가진 SQLFORM.factory를 사용해야합니다 생각 기본적으로 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) 

위의 코드는 필드를 추가합니다 동적으로하지만 값을 검색하고 데이터베이스에 삽입하는 것이 복잡해 보입니다. 그렇게하고 싶다고 생각합니다.

다음과 같은 해결 방법이 필요합니다. 필요한 필드 수를 인수로 전달하고 제출시 모든 필드가 삽입됩니다.

귀하의 요청을 이해할 수 없다면 더 잘 설명하십시오. form.It 수동 필드를 수행해야합니다에

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가 자동으로 추가 캔트 유 양식

에 필드를 추가 할 수 있습니다 이런 식으로. ('이름' ''= 위젯 '=', 라벨) 필드
관련 문제