Doh!
I have seen this page before (I remember the layout etc.)..
Thanks for reminding me/us!

Fabio, thanks for your thoughts.. it's helpful to compare it to the
QFocuser source and see how that one works.

Aaah.. too much going on at the moment to focus on every part of the
project! :)

Rolf

On Jun 27, 9:30 pm, csuwldcat <[email protected]> wrote:
> Daniel Stig. of the Mt dev team made one for Mootools before the
> jQuery one bit off his idea:http://code.google.com/p/qfocuser/
>
> No need to copy the imitation when you got the orig!
>
> On Jun 27, 10:40 am, Fábio Costa <[email protected]> wrote:
>
> > element.get('tabindex') ouldnt work since this is a very buggy attribute
> > theres an if on theyrr attr function if the attribute is tabindex, so you
> > would need need to create a get for tabindex.
>
> > this focusable thing is a very hard one, since you can define what is
> > focusable or not on your browser... its not a generic thing.
>
> > Element.Properties.tabindex = {
> > get: function(){
> > //this has been gotten from jquery.
> > // elem.tabIndex doesn't always return the correct value when it hasn't been
> > explicitly set
> > //http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-...
> >   var attributeNode = this.getAttributeNode( "tabIndex" );
> >   return attributeNode && attributeNode.specified
> >     ? attributeNode.value
> >      : this.nodeName.match(/(button|input|object|select|textarea)/i)
> >      ? 0
> >       : this.nodeName.match(/^(a|area)$/i) && this.href
> >       ? 0
> >        : undefined;
>
> > }
> > };
>
> > $extend(Selectors.Pseudo, {
>
> > // i have not tested this
> > focusable: function(element) {
> >    var el = this,
> >         nodeName = el.nodeName.toLowerCase(),
> >         tabIndex = el.get('tabindex');
> >    return (/input|select|textarea|button|object/.test(nodeName)
> >      ? !el.disabled
> >      : 'a' == nodeName || 'area' == nodeName
> >        ? el.href || !isNaN(tabIndex)
> >        : !isNaN(tabIndex))
> >      // the element and all of its ancestors must be visible
> >      // the browser may report that the area is hidden
> >      && (el.offsetWidth > 0 || el.offsetHeight > 0);
> >  },
>
> > //im not sure if is() == match() but if think it is
> >  tabbable: function(element) {
> >    var el = $(this),
> >          tabIndex = el.get('tabindex');
> >    return (isNaN(tabIndex) || tabIndex >= 0) && el.match(':focusable');
> >  }
>
> > });
>
> > Theres maybe something missing...
> > If it works let us know...
>
> > Fábio Miranda Costa
> > Engenheiro de Computaçãohttp://meiocodigo.com
>
> > On Fri, Jun 26, 2009 at 8:10 PM, Oskar Krawczyk 
> > <[email protected]>wrote:
>
> > > It would seem *$.attr(element, 'tabindex')* would be *
> > > element.get('tabindex')* in Moo. I can't believe how
> > > counter-self-explanatory jQ syntax is– "parents" (all of them?), "closest"
> > > (closest parent or sibling? single or a set of elements) wtf...
>
> > > Once you decipher how the functions work extend Pseudo.selectors by doing:
>
> > > $extend(Selectors.Pseudo, {
> > > tabable: function() {
> > >  // this = element
> > > }
> > > });
>
> > > On 26 Jun 2009, at 21:10, Rolf -nl wrote:
>
> > > I could use the :tabbable and :focusable selector functions from
> > > jQuery I spotted in jQuery UI,however I have 0 experience in their
> > > language syntax. How would someone start porting stuff like this too a
> > > MooTools extension?
>
> > > The majority of code is self explaining, but I for instance what
> > > $.attr does .... i dunno...
>
> > > //Additional selectors
> > > $.extend($.expr[':'], {
> > >  data: function(elem, i, match) {
> > >    return !!$.data(elem, match[3]);
> > >  },
>
> > >  focusable: function(element) {
> > >    var nodeName = element.nodeName.toLowerCase(),
> > >      tabIndex = $.attr(element, 'tabindex');
> > >    return (/input|select|textarea|button|object/.test(nodeName)
> > >      ? !element.disabled
> > >      : 'a' == nodeName || 'area' == nodeName
> > >        ? element.href || !isNaN(tabIndex)
> > >        : !isNaN(tabIndex))
> > >      // the element and all of its ancestors must be visible
> > >      // the browser may report that the area is hidden
> > >      && !$(element)['area' == nodeName ? 'parents' : 'closest']
> > > (':hidden').length;
> > >  },
>
> > >  tabbable: function(element) {
> > >    var tabIndex = $.attr(element, 'tabindex');
> > >    return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is
> > > (':focusable');
> > >  }
> > > });

Reply via email to