Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 6628

Show
Ignore:
Timestamp:
04/29/07 09:17:31 (1 year ago)
Author:
mislav
Message:

Prototype: Form.findFirstElement respects tabindexes; references #7595

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • spinoffs/prototype/branches/form/src/form.js

    r6610 r6628  
    6868 
    6969  findFirstElement: function(form) { 
    70     return $(form).getElements().find(function(element) { 
     70    var elements = $(form).getElements().findAll(function(element) { 
     71      return 'hidden' != element.type && !element.disabled; 
     72    }); 
     73    var firstByIndex = elements.findAll(function(element) { 
     74      return element.hasAttribute('tabIndex') && element.tabIndex >= 0; 
     75    }).sortBy(function(element) { return element.tabIndex }).first(); 
     76     
     77    return firstByIndex ? firstByIndex : elements.find(function(element) { 
    7178      return element.type != 'hidden' && !element.disabled && 
    7279        ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); 
  • spinoffs/prototype/branches/form/test/unit/form.html

    r6610 r6628  
    100100</form> 
    101101 
     102<form id="form_ffe"> 
     103  <p><input type="text" disabled="disabled" id="ffe_disabled" /></p> 
     104  <input type="hidden" id="ffe_hidden" /> 
     105  <input type="checkbox" id="ffe_checkbox" /> 
     106</form> 
     107 
     108<form id="form_ffe_ti"> 
     109  <p><input type="text" disabled="disabled" id="ffe_ti_disabled" /></p> 
     110  <input type="hidden" id="ffe_ti_hidden" /> 
     111  <input type="checkbox" id="ffe_ti_checkbox" /> 
     112  <input type="submit" id="ffe_ti_submit" tabindex="1" /> 
     113</form> 
     114 
     115<form id="form_ffe_ti2"> 
     116  <p><input type="text" disabled="disabled" id="ffe_ti2_disabled" /></p> 
     117  <input type="hidden" id="ffe_ti2_hidden" /> 
     118  <input type="checkbox" id="ffe_ti2_checkbox" tabindex="0" /> 
     119  <input type="submit" id="ffe_ti2_submit" tabindex="1" /> 
     120</form> 
     121 
    102122<!-- Tests follow --> 
    103123<script type="text/javascript" language="javascript" charset="utf-8"> 
     
    295315      assert(formInputs2 instanceof Array); 
    296316      assert(formInputs2.all(function(input) { return (input.tagName == "INPUT"); })); 
     317    }}, 
     318 
     319    testFormFindFirstElement: function() {with(this) { 
     320      assertEqual($('ffe_checkbox'), $('form_ffe').findFirstElement()); 
     321      assertEqual($('ffe_ti_submit'), $('form_ffe_ti').findFirstElement()); 
     322      assertEqual($('ffe_ti2_checkbox'), $('form_ffe_ti2').findFirstElement()); 
    297323    }}, 
    298324