So I copied SHtml over for fun and renamed it FH (form helper). Then I
tried messing with textarea first, just for fun. This can probably be
done much better, but this works just fine:
private def getAttrs(attrs: Tuple2[String, String]*) : MetaData = {
attrs.toList match {
case x :: xs =>
new UnprefixedAttribute(x._1, x._2, getAttrs(xs: _*))
case _ => Null
}
}
def textarea(value: String, func: String => Any,
attrs: Tuple2[String, String]*): Elem =
textarea_*(value, SFuncHolder(func), attrs: _*)
def textarea_*(value: String, func: AFuncHolder,
attrs: Tuple2[String, String]*): Elem = {
(<textarea name={mapFunc(func)}
rows="8" cols="40">{value}</textarea>) %
getAttrs(attrs: _*)
}
Now I can call it like this:
FH.textarea(contact.message, contact.message = _, ("id", "myId"),
("class", "myClass"), ("rows", "12"))
And I get this:
<textarea id="myId" class="myClass" rows="12" cols="40"></textarea>
(I added default rows and cols attributes because they are required for
valid XHTML.)
For what it's worth, this works much better for me.
Chas.
Charles F. Munat wrote:
> Ha. Great minds stink alike. I just discovered this little setback
> (after adding "id" attributes to about fifty checkboxes -- note to self:
> check one before doing them all).
>
> I've been messing with the map but it's messing with me. I can grab the
> right node pretty easily, but then I can't seem to add the MetaData.
>
> If you're looking to add an id, you can use checkbox_id:
>
> SHtml.checkbox_id(user.isStupid, user.isStupid = _, Full("isStupid"))
>
> which adds id="isStupid" to the checkbox input.
>
> Chas.
>
>
>
> Derek Chen-Becker wrote:
>> For a really neat trick, how would I set the ID for a checkbox? The
>> SHtml checkbox method returns a NodeSeq. I suppose I could just do a
>> "map", but I was wondering if there was a simpler way.
>>
>> Thanks,
>>
>> Derek
>>
>> On Mon, Nov 17, 2008 at 4:54 PM, David Pollak
>> <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
>> wrote:
>>
>>
>>
>> On Mon, Nov 17, 2008 at 3:41 PM, Charles F. Munat <[EMAIL PROTECTED]
>> <mailto:[EMAIL PROTECTED]>> wrote:
>>
>>
>> Added:
>>
>>
>> http://liftweb.net/index.php/FAQ#How_do_I_add_attributes_to_form_fields_created_with_SHtml_methods.3F
>>
>>
>> Awesome! Thanks!
>>
>>
>>
>> Chas.
>>
>> Jorge Ortiz wrote:
>> > Oops, it might be:
>> >
>> > SHtml.text(user.name <http://user.name> <http://user.name>,
>> user.name <http://user.name> <http://user.name> = _) %
>> > ("size" -> "24") %
>> > ("maxlength" -> "48") %
>> > ("id" -> "user_name") %
>> > ("title" -> "Enter your name")
>> >
>> > One or both of those should work.
>> >
>> > --j
>> >
>> > On Mon, Nov 17, 2008 at 12:27 PM, Jorge Ortiz
>> <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>> > <mailto:[EMAIL PROTECTED]
>> <mailto:[EMAIL PROTECTED]>>> wrote:
>> >
>> > Try:
>> >
>> > SHtml.text(user.name <http://user.name>
>> <http://user.name>, user.name <http://user.name>
>> > <http://user.name> = _) %
>> > ("size", "24") %
>> > ("maxlength", "48") %
>> > ("id", "user_name") %
>> > ("title", "Enter your name")
>> >
>> > That should work.
>> >
>> > --j
>> >
>> > On Mon, Nov 17, 2008 at 12:21 PM, Charles F. Munat
>> <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
>> > <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>> wrote:
>> >
>> >
>> > I spend a lot of time writing % new
>> UnprefixedAttribute(...) to add
>> > attributes to SHtml form elements (input, textarea,
>> select, etc.).
>> >
>> > It would be nice if the relevant SHtml methods would
>> permit optional
>> > extra parameters in the form of tuples where contents
>> are name-value
>> > pairs that get translated to attributes. I don't
>> think this
>> > would be a
>> > breaking change.
>> >
>> > In other words, instead of:
>> >
>> > SHtml.text(user.name <http://user.name>
>> <http://user.name>, user.name <http://user.name>
>> > <http://user.name> = _) %
>> > new UnprefixedAttribute("size", "24",
>> > new UnprefixedAttribute("maxlength", "48",
>> > new UnprefixedAttribute("id", "user_name",
>> > new UnprefixedAttribute("title", "Enter your
>> name", Null)
>> > )
>> > )
>> > )
>> >
>> > I could do:
>> >
>> > SHtml.text(user.name <http://user.name>
>> <http://user.name>, user.name <http://user.name>
>> > <http://user.name> = _,
>> > ("size", "24"),
>> > ("maxlength", "48"),
>> > ("id", "user_name"),
>> > ("title", "Enter your name")
>> > )
>> >
>> > Which is a hell of a lot cleaner and faster, and I
>> don't have to
>> > import
>> > UnprefixedAttribute and remember the % and the new
>> keywords.
>> >
>> > Or is this already possible and I'm missing it?
>> >
>> > I have an online survey with 43 questions on 5 pages
>> involving
>> > more than
>> > 150 database fields. The snippet is already over 700
>> lines and
>> > growing.
>> > It's just unmanageable.
>> >
>> > Another thing: the <label> element is a very
>> important part of
>> > accessibility to persons with disabilities, but it
>> needs a "for"
>> > attribute that references the "id" attribute of the input
>> > element (or
>> > textarea, etc.). The current SHtml output (unlike
>> Rails) does not
>> > generate an id attribute, so they have to be added by
>> hand. Has
>> > anyone
>> > given any thought to automatically-generated id
>> elements on form
>> > fields?
>> > Better yet, some way to integrate labels?
>> >
>> > Ideally, I would do something like this:
>> >
>> > <survey:name label="Your name"/>
>> >
>> > Or this:
>> >
>> > <survey:name>Your name</survey:name>
>> >
>> > and bind would allow me to generate this:
>> >
>> > <label for="id123">Your name
>> > <input type="text" id="id123" value=""
>> > name="F1226951216428645000_I0G"/>
>> > </label>
>> >
>> > What do others think? Is this already possible?
>> >
>> > Chas.
>> >
>> >
>> >
>> >
>> >
>> > >
>>
>>
>>
>>
>>
>> --
>> Lift, the simply functional web framework http://liftweb.net
>> Collaborative Task Management http://much4.us
>> Follow me: http://twitter.com/dpp
>> Git some: http://github.com/dpp
>>
>>
>>
>>
>>
>
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Lift" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---