- From: Erik Bruchez <ebruchez@orbeon.com>
- Date: Tue, 26 Aug 2008 23:24:42 -0700
- To: "public-forms (new)" <public-forms@w3.org>
John, I think you make a convincing case. As a side note I don't think that not sending xforms-invalid when the value (and its validity) has not changed is a quirk, rather it is a very desirable feature. -Erik On Aug 26, 2008, at 4:25 PM, John Boyer wrote: > > Hi Mark, > > I'd like to understand whether the example of keeping the focus on a > control if it is filled out incorrectly really works as a technique. > > One problem is that filling out one field incorrectly may cause > multiple controls to receive xforms-invalid events, and they will > arrive in an undefined order, so there is no way to guarantee that > the focus will stay in "the" invalid control. Could work for simple > forms with few data dependencies, but is not generally applicable. > > A second problem is that the invalidity in one control may be the > fault of a bad data entered elsewhere. The user may want to leave > the invalid data but then go fix the real problem. For example, > suppose the user with a bachelor's degree is asked to enter his age > and he types 18 rather than 28. A simple typo. Then, when asked > for years of schooling, the user enters 20. This pops a constraint > because he can't have more years of education than he has years of > life. However, the problem is with the age data, not the education > data. > > For the above reason, and just generally speaking, it is usually > considered to be poor UX to freeze up the focus in an invalid > control. The better practice is to stop the first focus out, but > then let the second attempt to remove focus succeed if the user has > made no changes. Now it turns out that a quirk of our processing > model might actually make an "event target setfocus" do exactly this > behavior because a second tab would not change the value, so you > would not get another invalid event. To be clear, if you have this > > <input ref="age" id="X"> > <label>Age</label> > <setfocus ev:event="xforms-invalid" control="X"/> > <alert>Please enter an integer number.</alert> > </input> > > then if the user types "abc" and hits tab, then the focus would stay > in the control and the user would see the alert. But if the user > hits tab again, then no data has changed so I don't think another > xforms-invalid event would occur, which means the focus would move > on, right? > > If so, is this the same as "preventing the user from leaving the > control if its value is not set appropriately"? > > And regardless of how this discussion goes, I don't really > understand why using the event function would look weird. > > <setfocus ev:event="xforms-invalid"> > <control value="event('target')"/> > </setfocus> > > It seems to say enough that it is clear what is going on. Put > another way, even if we chose a default of event target, I don't > think the method is declarative until you have a way to explicitly > state the default, so it would still be necessary to have a way of > saying that the control to focus is given by the event target. > > Cheers, > John M. Boyer, Ph.D. > Senior Technical Staff Member > Lotus Forms Architect and Researcher > Chair, W3C Forms Working Group > Workplace, Portal and Collaboration Software > IBM Victoria Software Lab > E-Mail: boyerj@ca.ibm.com > > Blog: http://www.ibm.com/developerworks/blogs/page/JohnBoyer > Blog RSS feed: http://www.ibm.com/developerworks/blogs/rss/JohnBoyer?flavor=rssdw > > > > > From: > "Mark Birbeck" <mark.birbeck@webbackplane.com> > To: > John Boyer/CanWest/IBM@IBMCA > Cc: > "Ulrich Nicolas Lissé" <unl@dreamlab.net>, public-forms <public-forms@w3.org > > > Date: > 08/20/2008 06:56 PM > Subject: > Re: Allow xf:setfocus with no @control to set the focus to the event > target > > > > > > Hi John, > > > [snip] > > > > Does it really make sense to try to focus the event target? > > If that's what the author wants...yes. It's not uncommon in HTML forms > to prevent users from leaving a control if its value is not set > appropriately, for example. > > > > What if a > > sequence of actions is grouped together and invoked from multiple > locations > > using dispatch? > > Sure...but if the listener is on the control, then you'll always > ultimately get Event.target set to the control in question, won't you? > > > > It seems an odd thing to see <setfocus/> without any indication of > what the > > focus is being set to. > > No different to any other default values, surely? (xf:rebuild, > xf:refresh, xf:submit, xf:send, etc.) And a lot less weird looking > than using the event() function. :) > > Regards, > > Mark > > -- > Mark Birbeck, webBackplane > > mark.birbeck@webBackplane.com > > http://webBackplane.com/mark-birbeck > > webBackplane is a trading name of Backplane Ltd. (company number > 05972288, registered office: 2nd Floor, 69/85 Tabernacle Street, > London, EC2A 4RR) > > > -- Orbeon Forms - Web Forms for the Enterprise Done the Right Way http://www.orbeon.com/
Received on Wednesday, 27 August 2008 06:25:28 UTC