[web2py] Advanced Live Search
In the example in chapter 3 of the book, mywiki application we have: def search(): an ajax wiki search page return dict(form=FORM(INPUT(_id='keyword',_name='keyword', _onkeyup=ajax('callback', ['keyword'], 'target');)), target_div=DIV(_id='target')) def callback(): an ajax callback that returns a ul of links to wiki pages query = db.page.title.contains(request.vars.keyword) pages = db(query).select(orderby=db.page.title) links = [A(p.title, _href=URL('show',args=p.id)) for p in pages] return UL(*links) Assume that we would like to search a keyword both in the title and the body of the wiki in the following manner: 1. The default search searches in the title and body both. 2. We have two check boxes with the attribute name set to title and body respectively. Initially both are checked. But the user can uncheck one of them to request the application to search only in the other field. What is the best way to achieve this? Specifically, if I add two checkboxes to the search function return expression, i.e.: INPUT(_type=checkbox, _name=title ), Title, INPUT(_type=checkbox, _name=body), Body, how I can check whether they are checked or not from within the callback function? I'd like to use these two checkboxes to express which fields of the database should be searched.
[web2py] Re: Advanced Live Search
Hi Anthony. Thanks for your answer. I seem to be unable to replicate what you said. How do you test if the checkboxes are checked? On Dec 27, 2:16 pm, Anthony abasta...@gmail.com wrote: You can submit multiple inputs (via id) with the ajax() function, so if you give your checkbox inputs id's (e.g., id='title' and id='body'), you should be able to do: ajax('callback', ['keyword', 'title', 'body'], 'target') and in the controller, access request.vars.keyword, request.vars.title, and request.vars.body (I think title and body will be None if they are not checked). Anthony On Tuesday, December 27, 2011 2:29:56 PM UTC-5, smirghor wrote: In the example in chapter 3 of the book, mywiki application we have: def search(): an ajax wiki search page return dict(form=FORM(INPUT(_id='keyword',_name='keyword', _onkeyup=ajax('callback', ['keyword'], 'target');)), target_div=DIV(_id='target')) def callback(): an ajax callback that returns a ul of links to wiki pages query = db.page.title.contains(request.vars.keyword) pages = db(query).select(orderby=db.page.title) links = [A(p.title, _href=URL('show',args=p.id)) for p in pages] return UL(*links) Assume that we would like to search a keyword both in the title and the body of the wiki in the following manner: 1. The default search searches in the title and body both. 2. We have two check boxes with the attribute name set to title and body respectively. Initially both are checked. But the user can uncheck one of them to request the application to search only in the other field. What is the best way to achieve this? Specifically, if I add two checkboxes to the search function return expression, i.e.: INPUT(_type=checkbox, _name=title ), Title, INPUT(_type=checkbox, _name=body), Body, how I can check whether they are checked or not from within the callback function? I'd like to use these two checkboxes to express which fields of the database should be searched.
[web2py] Re: Advanced Live Search
I figured this work if I have the name attributes for the checkboxes (and in my case the name attributes are the same as the id attributes). Thanks again! On Dec 27, 5:19 pm, smirghor m.mirghorb...@gmail.com wrote: Hi Anthony. Thanks for your answer. I seem to be unable to replicate what you said. How do you test if the checkboxes are checked? On Dec 27, 2:16 pm, Anthony abasta...@gmail.com wrote: You can submit multiple inputs (via id) with the ajax() function, so if you give your checkbox inputs id's (e.g., id='title' and id='body'), you should be able to do: ajax('callback', ['keyword', 'title', 'body'], 'target') and in the controller, access request.vars.keyword, request.vars.title, and request.vars.body (I think title and body will be None if they are not checked). Anthony On Tuesday, December 27, 2011 2:29:56 PM UTC-5, smirghor wrote: In the example in chapter 3 of the book, mywiki application we have: def search(): an ajax wiki search page return dict(form=FORM(INPUT(_id='keyword',_name='keyword', _onkeyup=ajax('callback', ['keyword'], 'target');)), target_div=DIV(_id='target')) def callback(): an ajax callback that returns a ul of links to wiki pages query = db.page.title.contains(request.vars.keyword) pages = db(query).select(orderby=db.page.title) links = [A(p.title, _href=URL('show',args=p.id)) for p in pages] return UL(*links) Assume that we would like to search a keyword both in the title and the body of the wiki in the following manner: 1. The default search searches in the title and body both. 2. We have two check boxes with the attribute name set to title and body respectively. Initially both are checked. But the user can uncheck one of them to request the application to search only in the other field. What is the best way to achieve this? Specifically, if I add two checkboxes to the search function return expression, i.e.: INPUT(_type=checkbox, _name=title ), Title, INPUT(_type=checkbox, _name=body), Body, how I can check whether they are checked or not from within the callback function? I'd like to use these two checkboxes to express which fields of the database should be searched.