From 2587c9c985146f30ec7a70059d5772f432754080 Mon Sep 17 00:00:00 2001 From: Patrick Filler Date: Wed, 13 Jul 2011 15:01:53 -0400 Subject: [PATCH] Fix some tabbing issues and unexpected fall through on keydown_checker --- chosen/chosen.jquery.js | 37 +++++++++++++++++++++---------------- coffee/chosen.jquery.coffee | 28 +++++++++++++++++----------- 2 files changed, 38 insertions(+), 27 deletions(-) diff --git a/chosen/chosen.jquery.js b/chosen/chosen.jquery.js index 410ace6..a0a5919 100644 --- a/chosen/chosen.jquery.js +++ b/chosen/chosen.jquery.js @@ -184,8 +184,8 @@ Chosen.prototype.close_field = function() { $(document).unbind("click", this.click_test_action); if (!this.is_multiple) { - this.selected_item.attr("tabIndex", this.search_field.attr("tabIndex")); - this.search_field.attr("tabIndex", -1); + this.selected_item.attr("tabindex", this.search_field.attr("tabindex")); + this.search_field.attr("tabindex", -1); } this.active_field = false; this.results_hide(); @@ -197,8 +197,8 @@ }; Chosen.prototype.activate_field = function() { if (!this.is_multiple && !this.active_field) { - this.search_field.attr("tabIndex", this.selected_item.attr("tabIndex")); - this.selected_item.attr("tabIndex", -1); + this.search_field.attr("tabindex", this.selected_item.attr("tabindex")); + this.selected_item.attr("tabindex", -1); } this.container.addClass("chzn-container-active"); this.active_field = true; @@ -273,7 +273,7 @@ }; Chosen.prototype.result_do_highlight = function(el) { var high_bottom, high_top, maxHeight, visible_bottom, visible_top; - if (el) { + if (el.length) { this.result_clear_highlight(); this.result_highlight = el; this.result_highlight.addClass("highlighted"); @@ -325,14 +325,14 @@ }; Chosen.prototype.set_tab_index = function(el) { var ti; - if (($(this.form_field)).attr("tabIndex")) { - ti = ($(this.form_field)).attr("tabIndex"); - ($(this.form_field)).attr("tabIndex", -1); + if (($(this.form_field)).attr("tabindex")) { + ti = ($(this.form_field)).attr("tabindex"); + ($(this.form_field)).attr("tabindex", -1); if (this.is_multiple) { - return this.search_field.attr("tabIndex", ti); + return this.search_field.attr("tabindex", ti); } else { - this.selected_item.attr("tabIndex", ti); - return this.search_field.attr("tabIndex", -1); + this.selected_item.attr("tabindex", ti); + return this.search_field.attr("tabindex", -1); } } }; @@ -626,16 +626,21 @@ } switch (stroke) { case 8: - return this.backstroke_length = this.search_field.val().length; + this.backstroke_length = this.search_field.val().length; + break; case 9: - return this.mouse_on_container = false; + this.mouse_on_container = false; + break; case 13: - return evt.preventDefault(); + evt.preventDefault(); + break; case 38: evt.preventDefault(); - return this.keyup_arrow(); + this.keyup_arrow(); + break; case 40: - return this.keydown_arrow(); + this.keydown_arrow(); + break; } }; Chosen.prototype.search_field_scale = function() { diff --git a/coffee/chosen.jquery.coffee b/coffee/chosen.jquery.coffee index 2fa8f80..2c96447 100644 --- a/coffee/chosen.jquery.coffee +++ b/coffee/chosen.jquery.coffee @@ -147,6 +147,7 @@ class Chosen setTimeout this.container_click.bind(this), 50 unless @active_field input_blur: (evt) -> + console.log "HUH?" if not @mouse_on_container @active_field = false setTimeout this.blur_test.bind(this), 100 @@ -158,8 +159,8 @@ class Chosen $(document).unbind "click", @click_test_action if not @is_multiple - @selected_item.attr "tabIndex", @search_field.attr("tabIndex") - @search_field.attr "tabIndex", -1 + @selected_item.attr "tabindex", @search_field.attr("tabindex") + @search_field.attr "tabindex", -1 @active_field = false this.results_hide() @@ -173,8 +174,8 @@ class Chosen activate_field: -> if not @is_multiple and not @active_field - @search_field.attr "tabIndex", @selected_item.attr "tabIndex" - @selected_item.attr "tabIndex", -1 + @search_field.attr "tabindex", (@selected_item.attr "tabindex") + @selected_item.attr "tabindex", -1 @container.addClass "chzn-container-active" @active_field = true @@ -241,7 +242,7 @@ class Chosen this.results_build() result_do_highlight: (el) -> - if el + if el.length this.result_clear_highlight(); @result_highlight = el; @@ -290,15 +291,15 @@ class Chosen set_tab_index: (el) -> - if ($ @form_field).attr "tabIndex" - ti = ($ @form_field).attr "tabIndex" - ($ @form_field).attr "tabIndex", -1 + if ($ @form_field).attr "tabindex" + ti = ($ @form_field).attr "tabindex" + ($ @form_field).attr "tabindex", -1 if @is_multiple - @search_field.attr "tabIndex", ti + @search_field.attr "tabindex", ti else - @selected_item.attr "tabIndex", ti - @search_field.attr "tabIndex", -1 + @selected_item.attr "tabindex", ti + @search_field.attr "tabindex", -1 show_search_field_default: -> if @is_multiple and @choices < 1 and not @active_field @@ -546,15 +547,20 @@ class Chosen switch stroke when 8 @backstroke_length = this.search_field.val().length + break when 9 @mouse_on_container = false + break when 13 evt.preventDefault() + break when 38 evt.preventDefault() this.keyup_arrow() + break when 40 this.keydown_arrow() + break search_field_scale: ->