[Zope3-dev] zope.app.form generates invalid HTML
Andreas Reuleaux
reuleaux at web.de
Fri Feb 23 21:48:29 EST 2007
Try
#form\.title
i.e. you have to escape the dot otherwise
FF thinks it's for an element with class title
<... id="form" class="title" ...>
at least that works for me in a very simple example:
<p id="x.y">hallo</p>
#x\.y {
...
}
just my 2 cents
-Andreas
On Fri, Feb 23, 2007 at 02:13:23AM +0000, Martin Aspeli wrote:
> Hi guys,
>
> I'm pretty sure you're not allowed dots in ids of HTML elements. At
> least not when they are prefixed by 'form'. A zope.schema.TextLine in a
> formlib form, for example, generates HTML like this:
>
> <input id="form.title" class="textType" type="text" value="Changed
> title" size="20" name="form.title"/>
>
> In particular, we want to style the fields to look a bit more like
> Plone, and we have special cases for "title" and "description" that we
> want to style by ID, not class.
>
> However, CSS like this has no effect in Firefox or Safari:
>
> #form.title {
> font-size: 160%;
> font-family: <dtml-var headingFontFamily>;
> font-weight: normal;
> width: 99%;
> }
> #form.description {
> font: 100% <dtml-var fontFamily>;
> font-weight: bold;
> height: 6em;
> width: 99%;
> }
>
> Not all that surprising - it could look like I'm styling a form with
> class="description".
>
> I then hacked zope.app.form.widget's renderElement() function to look
> like this:
>
> def renderTag(tag, **kw):
> """Render the tag. Well, not all of it, as we may want to / it."""
>
> if 'id' in kw:
> kw['id'] = kw['id'].replace('.', '-')
>
> ...
>
> The tests in zope.app.form still pass.
>
> Hacky, but the alternatives are to (a) override all the widgets or (b)
> at least provide custom ones only for the purpose of getting stylable
> ids on various fields. renderTag() is called from a lot of places with
> id=self.name. We could fix all those, too, of course.
>
> I would be happy to submit a patch for either the explicit check in
> renderTag() or for changing all calls to this in zope.app.form.
>
> However, if someone has depended on the ids being with dots (possibly
> not quite as likely as it may seem, since these forms are typically
> auto-generated) then we may not have a decent way of deprecating that.
>
> Martin
>
> _______________________________________________
> Zope3-dev mailing list
> Zope3-dev at zope.org
> Unsub: http://mail.zope.org/mailman/options/zope3-dev/reuleaux%40web.de
>
>
>
> !DSPAM:45defabb202742984811091!
More information about the Zope3-dev
mailing list