From: S.T. on
On 3/16/2010 5:02 PM, David Mark wrote:

> What would possess you to use code written by a jQuery maven to
> implement something as simple as an auto-complete feature? Of course it
> is buggy. It can't not be buggy. All you have to do is look at the
> code it is built on (the actual code, not what you can see it doing in a
> handful of browsers). And a year from now they'll announce they've
> stopped "caring" about IE< 9 anyway (and then all of that stuff will go
> to hell in a hurry) and you'll have to upgrade to get it work with some
> newer browser. All of that against spending a couple of hours slapping
> together an auto-complete? That's something that you should already
> have in your arsenal (or at least the few pieces required to build one).


I already use jQuery UI on the intranet app for it's datepicker (which I
really like) and it's drag/drop which I like as well. I would never have
bothered coding drag/drop functionality as its use was for something I
deemed not too important -- more of an experiment (our salespeople
"build" an HTML email quote and prices with it from a bunch of
components). As it turned out the sales agents love it.

Dialog -- not so much. Tabs/Accordion -- why bother?

Autocomplete has promise - they thought out the key-bindings to increase
functionality pretty darn well and doing nothing more than spitting back
a query result via some PHP'd json_encode() is nice - but I still find
kinks in the manner I use it. So far a little custom CSS has fixed "my"
bugs though. I'll be curious what the final version looks like.

jQuery UI IS on the bloated side -- no argument there -- but on my
intranet app (Win+FF3.6 without exception) it's fine. For now, at least,
it's used in-house only. Damn fast to develop/prototype with though.

I'm not a fan of using an autocomplete solution on public-facing sites,
mine or a prepackaged version. I'm sure there are roles where it works
but for the most part it seems to confuse too many visitors.
From: Doug Gunnoe on
On Mar 16, 6:02 pm, David Mark <dmark.cins...(a)gmail.com> wrote:

> It can't not be buggy.

That's the best double negative I've seen in a long time.

From: Garrett Smith on
S.T. wrote:
> On 3/16/2010 5:02 PM, David Mark wrote:
>
>> What would possess you to use code written by a jQuery maven to
>> implement something as simple as an auto-complete feature? Of course it
>> is buggy. It can't not be buggy. All you have to do is look at the
>> code it is built on (the actual code, not what you can see it doing in a
>> handful of browsers). And a year from now they'll announce they've
>> stopped "caring" about IE< 9 anyway (and then all of that stuff will go
>> to hell in a hurry) and you'll have to upgrade to get it work with some
>> newer browser. All of that against spending a couple of hours slapping
>> together an auto-complete? That's something that you should already
>> have in your arsenal (or at least the few pieces required to build one).
>
>
> I already use jQuery UI on the intranet app for it's datepicker (which I
> really like)

The jQuery datepicker that uses mm/dd/yyyy?
http://jqueryui.com/demos/datepicker/

That Datepicker does not meet basic usability and accessibility
criteria. It uses a nonstandard date format (YYYY-MM-DD) and provides no
indication of what format the user should enter, should js be disabled.
It is not keyboard friendly. There is no way to navigate years. It
breaks bfcache.

The format mm/dd/yyyy is nonstandard and worse, is not stated in the
label. That is bad usability. Instead, the label should use a standard
format and indicate that format clearly in the label where the user will
unavoidably see it, e.g.

Date (YYYY-MM-DD): [ ]
(It is also acceptable to additionally use placeholder text that
contains that standard format).

When entering of an ISO-8601 date format, the user is prevented (only
when javascript is enabled). What I mean is that typing: "2012-", the
"-" character is not entered.

The datepicker cannot navigate years. Try entering your birthdate using
the "month back" button. Not nice at all and even you kids out there
trying this out can see how aggravating that can be.

Not keyboard accessible! The calendar should be navigable by the
keyboard keys. I hate sites that force me to use my trackpad.

Regarding bfcache that I mentioned earlier: You might notice is that in
Firefox, or another browser that ties bfcache to unload, is that when
navigating back, the Calendar disappears, and whatever was visible in
the calendar is gone, and so you have to navigate the thing to the right
month again.

The bfcache breakage is caused by unload event handlers. Such design is
not optimal for a more complicated RIA, where in most cases, the user
would want the page to load as quickly as possible and retain its state
on hitting "back" button.

I believe in the requirements:
* works with JS disabled
* provides indication of date format in label
* uses INPUT type="date", where available
* fallback to js-driven calendar widget
* uses ISO 8601 format
* full keyboard a11y
* can navigate years and months

Those requirements, with a partial implementation of HTML 5 input
type="date", are what I decided upon for my own Calendar widget.
http://dhtmlkitchen.com/ape/example/widget/Calendar/

and it's drag/drop which I like as well. I would never have
> bothered coding drag/drop functionality as its use was for something I
> deemed not too important -- more of an experiment (our salespeople
> "build" an HTML email quote and prices with it from a bunch of
> components). As it turned out the sales agents love it.
>

Usability assessments from unqualified individuals are often harmful.
This is particularly the case when you get sales and marketing thinking
they want the web page to work a certain way, such as to include a
popup, automatically draw focus to an input, scroll the viewport
automatically, marquee, gif animations, and other such mistakes of years
gone by.

> Dialog -- not so much. Tabs/Accordion -- why bother?
>
> Autocomplete has promise - they thought out the key-bindings to increase
> functionality pretty darn well and doing nothing more than spitting back
> a query result via some PHP'd json_encode() is nice - but I still find
> kinks in the manner I use it. So far a little custom CSS has fixed "my"
> bugs though. I'll be curious what the final version looks like.
>

What requirements are important for Autocomplete?

I've not yet finished unit tests for mine. I'm interested in hearing
considerations.
--
Garrett
comp.lang.javascript FAQ: http://jibbering.com/faq/
From: David Mark on
Doug Gunnoe wrote:
> On Mar 16, 6:02 pm, David Mark <dmark.cins...(a)gmail.com> wrote:
>
>> It can't not be buggy.
>
> That's the best double negative I've seen in a long time.
>

Thanks! It was certainly intentional, but the ironic context is lost in
this quote.
From: kangax on
On 3/16/10 6:17 PM, Garrett Smith wrote:
> A colleague of mine recently informed me with the emphatic title:
> "HTML5, CSS3, and omg finally AddEventListener in new IE9!"
>
> With a link to:
> http://ie.microsoft.com/testdrive/

[...]

I was testing preview of IE9 on Vista yesterday and posted some of the
initial observations on twitter (http://twitter.com/kangax). Most
notable change � IE can now actually render documents served as
application/xhtml+xml. When it comes to JScript/DOM, some things are
tweaked, but a lot of old cruft still remains.

Here are some of those findings:


What happened to #ES5 in #IE9? No String#trim, no Function#bind, no
Object.create, no Array.isArray, no accessors.

In #IE9 host objects still (!) don't inherit from `Object`/`Function`
(`window.alert instanceof Function === false`). Not good.

On the bright side, Array#slice can now convert NodeLists to array!
[].slice.call(document.getElementsByTagName('*')) instanceof Array==true

In #IE9, attributes and properties are still (!) mapped to each other.
Some things never change? :)

Same bugs in #IE9: gEBTN returns comment nodes, innerHTML is buggy with
select/table elements, gEBN mixes names and ids.

Named function expressions still leak identifier to enclosing scope in
#IE9. IE team promises to fix things: http://bit.ly/aCCYWY

#IE9 good part: Object.defineProperty now works with non-host objects
`Object.defineProperty({ }, 'x', { value: 'y', writable: false })`

Host object madness continues: `window.window === window` is still
`false` in #IE9 :)

#IE9 fails 10 out of 24 tests when it comes to `delete` conformance �
http://bit.ly/9Xd7Bd (must be preview issue, since IE8 fails only 3)

#IE9 still thinks that 4096 CSS rules should be enough for anyone �
http://bit.ly/71BKUL

OMG. #IE9 actually _renders_ XHTML served as... "application/xhtml+xml"
I can not believe this...

#IE9 good part: Host objects are less crazy. `document.x=1; delete x`
doesn't throw and `typeof document.forms.item` is no longer a "string"

..@abozhilov Unfortunately, there's still "unknown" type which throws
error on [[Get]] `document.createElement('p').offsetParent+''`; // boom

..@abozhilov DontEnum bug seems to be fixed. Yay! `for (var p in {
toString: 1 }) console.log(p); // logs "toString"` #IE9

..@abozhilov Nope, no __proto__, __parent__, __defineGetter__, or `watch`
in #IE9

Whitespace character class still doesn't match NO-BREAK SPACE
`/\s/.test('\u00A0') === false` #IE9

Not only is there no `Array.prototype.*` extras (forEach, map, reduce),
but even basic JS1.6 `indexOf` is missing. Sad. #IE9

Event object passed to event handler (added with `addEventListener`) is
NOT an `instanceof Event`. #IE9

And there's still only a proprietary innerText in #IE9, not DOM L3
Node::textContent :) Ok, let's wait and see what next update will bring..

HTH

--
kangax