I merge autocomplete with SELECT_OR_ADD_OPTION and name it :
AutocompleteWidgetSelectOrAddOption

It available here at the bottom of the thread :
https://groups.google.com/forum/?fromgroups#!topic/web2py/9KamKgHKUwU

Or I will create a web2py slice soon, I hope...

Richard


On Mon, May 14, 2012 at 12:32 PM, Remco K <[email protected]> wrote:

> Thank you very much, Anthony! This was exactly what i was looking for.
> Problem solved.
>
> Op vrijdag 11 mei 2012 19:07:32 UTC+2 schreef Anthony het volgende:
>
>> Are you trying to auto-complete a reference field, and you want to be
>> able to add new records to the referenced table? The built-in autocomplete
>> widget doesn't handle that out of the box, but upon submission, you could
>> check the request variables, and if the submitted value doesn't belong to
>> an existing record in the referenced table, you could do an insert:
>>
>> Model:
>>
>> db.define_table('category', Field(name))
>>
>> db.define_table('article',
>>     Field('title'),
>>     Field('body', 'text'),
>>     Field('category', db.category,
>>           widget=SQLFORM.widgets.autocom**plete(request, db.category.name
>> , id_field=db.category.id)))
>>
>> Controller:
>>
>> def myfunction():
>>     if request.post_vars._**autocomplete_name_aux and not request.
>> post_vars.category:
>>         request.post_vars.category = db.category.insert(name=reques**t.
>> post_vars._autocomplete_**name_aux)
>>     return dict(form=SQLFORM(db.article).**process())
>>
>> When you use the autocomplete widget on a reference field, it submits the
>> display value in a special field named 
>> _autocomplete_[display_field_**name]_aux,
>> and the actual field value is the record ID of the referenced record
>> associated with the display value. However, if you enter and submit a
>> display value that does not have an associated record in the referenced
>> table, the reference field value will simply be empty (though the
>> _autocomplete_..._aux field will contain the submitted display value).
>>
>> For example, when submitting a new article, suppose you enter
>> "programming" in the category input field, but "programming" does not yet
>> exist in the db.category table. In that case, request.post_vars.category
>> will be empty, and request.post_vars._**autocomplete_name_aux will
>> contain the word "programming". In that case, the above code inserts
>> "programming" into the db.category table and stores the new record ID in
>> request.post_vars.category. When the form is then processed, the new
>> db.article record will be created, with the new db.category record ID
>> stored in the db.article.category field.
>>
>> Perhaps the autocomplete widget should handle this automatically (with an
>> optional setting).
>>
>> Anthony
>>
>> On Thursday, May 10, 2012 12:44:51 PM UTC-4, gfdgdgfdg wrote:
>>>
>>> Hello everyone,
>>>
>>> I'm looking for a way to get an auto-complete field combined with adding
>>> non-existing item to the DB. I've seen a website which
>>> uses this functionality (demo: 
>>> http://www.tellmehow.nl/video.**html<http://www.tellmehow.nl/video.html>)
>>>
>>> I have already tried SELECT_OR_ADD_OPTION but i don't like drop-downs...
>>>
>>> Thanks in advance!
>>> Remco
>>
>>
> Op vrijdag 11 mei 2012 19:07:32 UTC+2 schreef Anthony het volgende:
>
>> Are you trying to auto-complete a reference field, and you want to be
>> able to add new records to the referenced table? The built-in autocomplete
>> widget doesn't handle that out of the box, but upon submission, you could
>> check the request variables, and if the submitted value doesn't belong to
>> an existing record in the referenced table, you could do an insert:
>>
>> Model:
>>
>> db.define_table('category', Field(name))
>>
>> db.define_table('article',
>>     Field('title'),
>>     Field('body', 'text'),
>>     Field('category', db.category,
>>           widget=SQLFORM.widgets.autocom**plete(request, db.category.name
>> , id_field=db.category.id)))
>>
>> Controller:
>>
>> def myfunction():
>>     if request.post_vars._**autocomplete_name_aux and not request.
>> post_vars.category:
>>         request.post_vars.category = db.category.insert(name=reques**t.
>> post_vars._autocomplete_**name_aux)
>>     return dict(form=SQLFORM(db.article).**process())
>>
>> When you use the autocomplete widget on a reference field, it submits the
>> display value in a special field named 
>> _autocomplete_[display_field_**name]_aux,
>> and the actual field value is the record ID of the referenced record
>> associated with the display value. However, if you enter and submit a
>> display value that does not have an associated record in the referenced
>> table, the reference field value will simply be empty (though the
>> _autocomplete_..._aux field will contain the submitted display value).
>>
>> For example, when submitting a new article, suppose you enter
>> "programming" in the category input field, but "programming" does not yet
>> exist in the db.category table. In that case, request.post_vars.category
>> will be empty, and request.post_vars._**autocomplete_name_aux will
>> contain the word "programming". In that case, the above code inserts
>> "programming" into the db.category table and stores the new record ID in
>> request.post_vars.category. When the form is then processed, the new
>> db.article record will be created, with the new db.category record ID
>> stored in the db.article.category field.
>>
>> Perhaps the autocomplete widget should handle this automatically (with an
>> optional setting).
>>
>> Anthony
>>
>> On Thursday, May 10, 2012 12:44:51 PM UTC-4, gfdgdgfdg wrote:
>>>
>>> Hello everyone,
>>>
>>> I'm looking for a way to get an auto-complete field combined with adding
>>> non-existing item to the DB. I've seen a website which
>>> uses this functionality (demo: 
>>> http://www.tellmehow.nl/video.**html<http://www.tellmehow.nl/video.html>)
>>>
>>> I have already tried SELECT_OR_ADD_OPTION but i don't like drop-downs...
>>>
>>> Thanks in advance!
>>> Remco
>>
>>

Reply via email to