This breaks, I believe formatting is the culprit.  I was not able to fix
it right away.

On Wed, 2010-09-08 at 13:27 -0700, mdipierro wrote:
> A little better:
> 
> 
> def ListStringWidget(field,value,**attributes):
>     _id = '%s_%s' % (field._tablename, field.name)
>     _name = field.name
>     if field.type=='list:integer': _class = 'integer'
>     else: _class = 'string'
>     requires = field.requires
>  
> items=[LI(INPUT(_id=_id,_class=_class,_name=_name,value=v,hideerror=True))
> for v in value or ['']]
>     #if
> items:
>     #    items[-1][0]['hideerror'] =
> False
>  
> script=SCRIPT("""
> // from http://refactormycode.com/codes/694-expanding-input-list-using-jquery
> (function()
> {
> jQuery.fn.grow_input = function()
> {
>   return this.each(function()
> {
>     var ul =
> this;
>     jQuery(ul).find(":text").keypress(function (e) { return (e.which
> == 13) ? pe(ul) :
> true; });
>   });
> };
> function pe(ul)
> {
>   var new_line =
> ml(ul);
>  
> rel(ul);
>  
> new_line.appendTo(ul);
>  
> new_line.find(":text").focus();
>   return
> false;
> }
> function ml(ul)
> {
>   var line =
> jQuery(ul).find("li:first").clone(true);
>  
> line.find(':text').val('');
>   return
> line;
> }
> function rel(ul)
> {
>   jQuery(ul).find("li").each(function()
> {
>     var trimmed =
> jQuery.trim(jQuery(this.firstChild).val());
>     if (trimmed=='') jQuery(this).remove(); else
> jQuery(this.firstChild).val(trimmed);
>   });
> }
> })
> ();
> jQuery(document).ready(function(){jQuery('#
> %s_grow_input').grow_input();});
> """ % _id)
>     attributes['_id']=_id+'_grow_input'
>     return TAG[''](UL(*items,**attributes),script)
> 
> db.define_table('person',Field('name'),Field('addresses','list:string',widget=ListStringWidget))
> 


Reply via email to