'Solve it, Add the following line before "register_form =...." v = [form.Validator("Check more than 3", lambda x: len(x.check)>3)] Then modify line "register_form= ....." register_form = form.Form(validators=v, *args) to add the validator.
Then modify line: "if not f.validates():" if not f.validates(web.input(check=[])): to pass the submited data and validate it. Hope this helps. I was searching the net for a "quick" solution but could not find one. On Tuesday, June 4, 2013 7:16:58 PM UTC+3, daniel crisan wrote: > > Hello, > > I need to validate a form only if X or more checkboxes were checked and I > cannot find out how. Bellow is the simple code which needs the validator > (there are 5 checkboxes - same name - and the form should validate only if > 3 or more were selected). Can you please point me to the right direction? > > import web > from web import form > > render = web.template.render('templates/') > > urls = ('/', 'index') > app = web.application(urls, globals()) > > args = () > for i in range(0, 5): > args = args + ( form.Checkbox('check', value=str(i) ), ) > > args = args + (form.Button("submit", type="submit", description="Submit"),) > > register_form = form.Form(*args) > > class index: > def GET(self): > # do $:f.render() in the template > f = register_form() > return render.register(f) > > def POST(self): > f = register_form() > if not f.validates(): > return render.register(f) > else: > pdata=web.input(check=[]) > print pdata > > if __name__=="__main__": > web.internalerror = web.debugerror > app.run() > -- You received this message because you are subscribed to the Google Groups "web.py" group. To unsubscribe from this group and stop receiving emails from it, send an email to webpy+unsubscr...@googlegroups.com. To post to this group, send email to webpy@googlegroups.com. Visit this group at http://groups.google.com/group/webpy?hl=en. For more options, visit https://groups.google.com/groups/opt_out.