W3C home > Mailing lists > Public > whatwg@whatwg.org > December 2010

[whatwg] Form element invalid message

From: Jonas Sicking <jonas@sicking.cc>
Date: Wed, 29 Dec 2010 08:58:31 -0800
Message-ID: <AANLkTi=NOWv5T=2b7+fzvp5okzC0tgz7PTV-RVS1FX0_@mail.gmail.com>
On Wed, Dec 29, 2010 at 2:23 AM, Mounir Lamouri
<mounir.lamouri at gmail.com> wrote:
> On 12/29/2010 07:41 AM, Ian Hickson wrote:
>>> One way to do this would be to make the "invalid" event implement an
>>> interface with a function like setCustomErrorMessage(in DOMString
>>> message). This string would then be displayed by the UA in its UI
>>> wherever it displays validation error messages.
>>>
>>> I actually think that the customerrormessage attribute that has been
>>> suggested is a decent solution too. It does mean that you have to do
>>> some trickery if you want to display different error messages for
>>> different types of errors, but nothing too bad. All you'd need to do is
>>> install an event handler for the "invalid" event, and in that handler do
>>> something like element.setAttribute("customerrormessage", myMessage);
>>
>> If you're setting an error message, what's wrong with setCustomValidity()?
>
> setCustomValidity() means "this element is invalid for custom reasons"
> and the argument is the error message. I think the use case of
> setCustomValidity() is *checking* something on oninput, onchange or
> other events and, if the condition is not fulfilled, call the method to
> make the element invalid. For example, two passwords fields have to be
> the same.
>
> The customerrormessage attribute would have different use cases. It
> would be when the element has known reasons to be invalid but when the
> author want to override the UA string. I see two reasons for that:
> 1. the element has very complex rules like: <input type='email'
> name='username' required maxlength="100" pattern="[^@]*@company.com">.
> It sounds hard for a UA to give one simple sentence for this situation
> but the author can try something like "Please, enter your corporate
> email address (max 100 chars)".
> 2. the author want a specific string to match the context of the
> website. For example, when you want to log on Foo website, the author
> might want to be sure you see "Please enter you Foo ID." instead of a
> generic "Please, fill this field." for <input name='username' required>
>
> For sure, you can use setCustomValidity() for both use cases but there
> is a small semantic difference and a bigger work to do. Using
> setCustomValidity() for these use cases would be a pain while using a
> customerrormessage attribute would be quite straightforward.

I should also mention that we have implemented such an attribute in
Firefox 4 named x-moz-errormessage. We encourage authors to use this
and provide feedback regarding it's usefulness.

/ Jonas
Received on Wednesday, 29 December 2010 08:58:31 UTC

This archive was generated by hypermail 2.3.1 : Monday, 13 April 2015 23:09:02 UTC