harvesthq / chosen

Deprecated - Chosen is a library for making long, unwieldy select boxes more friendly.
http://harvesthq.github.io/chosen/
Other
21.85k stars 4.1k forks source link

Radio buttons advance on page refresh #85

Closed ndelargy closed 11 years ago

ndelargy commented 13 years ago

On a page featuring a chosen select drop down and some radio buttons. A page refresh causes the selected radio button to go to the next radio button along.

I've spent some time creating a self contained page that demonstrates this issue. Please contact me and I'll send it to you. I've sent an email to info@getharvest.com with the html to replicate the error.

This affects Firefox 5.0

Thanks, Neil

pfiller commented 13 years ago

Please share the html (or a link to the html) here. The github issues page is the best place for debugging problems with Chosen.

ndelargy commented 13 years ago
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>Advancing Radio Buttons</title>
  <script type='text/javascript' src='http://code.jquery.com/jquery-1.6.2.js'></script>
  <link rel="stylesheet" type="text/css" href="http://harvesthq.github.com/chosen/chosen/chosen.css">

  <script type='text/javascript'>
  //<![CDATA[
  $(window).load(function(){
  (function() {
  /*
  Chosen, a Select Box Enhancer for jQuery and Protoype
  by Patrick Filler for Harvest, http://getharvest.com

  Available for use under the MIT License, http://en.wikipedia.org/wiki/MIT_License

  Copyright (c) 2011 by Harvest
  */  var $, Chosen, SelectParser, get_side_border_padding, root;
  var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
  root = typeof exports !== "undefined" && exports !== null ? exports : this;
  $ = jQuery;
  $.fn.extend({
    chosen: function(data, options) {
      return $(this).each(function(input_field) {
        if (!($(this)).hasClass("chzn-done")) {
          return new Chosen(this, data, options);
        }
      });
    }
  });
  Chosen = (function() {
    function Chosen(elmn) {
      this.set_default_values();
      this.form_field = elmn;
      this.form_field_jq = $(this.form_field);
      this.is_multiple = this.form_field.multiple;
      this.default_text_default = this.form_field.multiple ? "Select Some Options" : "Select an Option";
      this.set_up_html();
      this.register_observers();
      this.form_field_jq.addClass("chzn-done");
    }
    Chosen.prototype.set_default_values = function() {
      this.click_test_action = __bind(function(evt) {
        return this.test_active_click(evt);
      }, this);
      this.active_field = false;
      this.mouse_on_container = false;
      this.results_showing = false;
      this.result_highlighted = null;
      this.result_single_selected = null;
      return this.choices = 0;
    };
    Chosen.prototype.set_up_html = function() {
      var container_div, dd_top, dd_width, sf_width;
      this.container_id = this.form_field.id + "_chzn";
      this.f_width = this.form_field_jq.width();
      this.default_text = this.form_field_jq.attr('title') ? this.form_field_jq.attr('title') : this.default_text_default;
      container_div = $("<div />", {
        id: this.container_id,
        "class": 'chzn-container',
        style: 'width: ' + this.f_width + 'px;'
      });
      if (this.is_multiple) {
        container_div.html('<ul class="chzn-choices"><li class="search-field"><input type="text" value="' + this.default_text + '" class="default" style="width:25px;" /></li></ul><div class="chzn-drop" style="left:-9000px;"><ul class="chzn-results"></ul></div>');
      } else {
        container_div.html('<a href="javascript:void(0)" class="chzn-single"><span>' + this.default_text + '</span><div><b></b></div></a><div class="chzn-drop" style="left:-9000px;"><div class="chzn-search"><input type="text" /></div><ul class="chzn-results"></ul></div>');
      }
      this.form_field_jq.hide().after(container_div);
      this.container = $('#' + this.container_id);
      this.container.addClass("chzn-container-" + (this.is_multiple ? "multi" : "single"));
      this.dropdown = this.container.find('div.chzn-drop').first();
      dd_top = this.container.height();
      dd_width = this.f_width - get_side_border_padding(this.dropdown);
      this.dropdown.css({
        "width": dd_width + "px",
        "top": dd_top + "px"
      });
      this.search_field = this.container.find('input').first();
      this.search_results = this.container.find('ul.chzn-results').first();
      this.search_field_scale();
      this.search_no_results = this.container.find('li.no-results').first();
      if (this.is_multiple) {
        this.search_choices = this.container.find('ul.chzn-choices').first();
        this.search_container = this.container.find('li.search-field').first();
      } else {
        this.search_container = this.container.find('div.chzn-search').first();
        this.selected_item = this.container.find('.chzn-single').first();
        sf_width = dd_width - get_side_border_padding(this.search_container) - get_side_border_padding(this.search_field);
        this.search_field.css({
          "width": sf_width + "px"
        });
      }
      this.results_build();
      return this.set_tab_index();
    };
    Chosen.prototype.register_observers = function() {
      this.container.click(__bind(function(evt) {
        return this.container_click(evt);
      }, this));
      this.container.mouseenter(__bind(function(evt) {
        return this.mouse_enter(evt);
      }, this));
      this.container.mouseleave(__bind(function(evt) {
        return this.mouse_leave(evt);
      }, this));
      this.search_results.click(__bind(function(evt) {
        return this.search_results_click(evt);
      }, this));
      this.search_results.mouseover(__bind(function(evt) {
        return this.search_results_mouseover(evt);
      }, this));
      this.search_results.mouseout(__bind(function(evt) {
        return this.search_results_mouseout(evt);
      }, this));
      this.form_field_jq.bind("liszt:updated", __bind(function(evt) {
        return this.results_update_field(evt);
      }, this));
      this.search_field.blur(__bind(function(evt) {
        return this.input_blur(evt);
      }, this));
      this.search_field.keyup(__bind(function(evt) {
        return this.keyup_checker(evt);
      }, this));
      this.search_field.keydown(__bind(function(evt) {
        return this.keydown_checker(evt);
      }, this));
      if (this.is_multiple) {
        this.search_choices.click(__bind(function(evt) {
          return this.choices_click(evt);
        }, this));
        return this.search_field.focus(__bind(function(evt) {
          return this.input_focus(evt);
        }, this));
      } else {
        return this.selected_item.focus(__bind(function(evt) {
          return this.activate_field(evt);
        }, this));
      }
    };
    Chosen.prototype.container_click = function(evt) {
      if (evt && evt.type === "click") {
        evt.stopPropagation();
      }
      if (!this.pending_destroy_click) {
        if (!this.active_field) {
          if (this.is_multiple) {
            this.search_field.val("");
          }
          $(document).click(this.click_test_action);
          this.results_show();
        } else if (!this.is_multiple && evt && ($(evt.target) === this.selected_item || $(evt.target).parents("a.chzn-single").length)) {
          evt.preventDefault();
          this.results_toggle();
        }
        return this.activate_field();
      } else {
        return this.pending_destroy_click = false;
      }
    };
    Chosen.prototype.mouse_enter = function() {
      return this.mouse_on_container = true;
    };
    Chosen.prototype.mouse_leave = function() {
      return this.mouse_on_container = false;
    };
    Chosen.prototype.input_focus = function(evt) {
      if (!this.active_field) {
        return setTimeout((__bind(function() {
          return this.container_click();
        }, this)), 50);
      }
    };
    Chosen.prototype.input_blur = function(evt) {
      if (!this.mouse_on_container) {
        this.active_field = false;
        return setTimeout((__bind(function() {
          return this.blur_test();
        }, this)), 100);
      }
    };
    Chosen.prototype.blur_test = function(evt) {
      if (!this.active_field && this.container.hasClass("chzn-container-active")) {
        return this.close_field();
      }
    };
    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.active_field = false;
      this.results_hide();
      this.container.removeClass("chzn-container-active");
      this.winnow_results_clear();
      this.clear_backstroke();
      this.show_search_field_default();
      return this.search_field_scale();
    };
    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.container.addClass("chzn-container-active");
      this.active_field = true;
      this.search_field.val(this.search_field.val());
      return this.search_field.focus();
    };
    Chosen.prototype.test_active_click = function(evt) {
      if ($(evt.target).parents('#' + this.container.id).length) {
        return this.active_field = true;
      } else {
        return this.close_field();
      }
    };
    Chosen.prototype.results_build = function() {
      var content, data, startTime, _i, _len, _ref;
      startTime = new Date();
      this.parsing = true;
      this.results_data = SelectParser.select_to_array(this.form_field);
      if (this.is_multiple && this.choices > 0) {
        this.search_choices.find("li.search-choice").remove();
        this.choices = 0;
      } else if (!this.is_multiple) {
        this.selected_item.find("span").text(this.default_text);
      }
      content = '';
      _ref = this.results_data;
      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
        data = _ref[_i];
        if (data.group) {
          content += this.result_add_group(data);
        } else if (!data.empty) {
          content += this.result_add_option(data);
          if (data.selected && this.is_multiple) {
            this.choice_build(data);
          } else if (data.selected && !this.is_multiple) {
            this.selected_item.find("span").text(data.text);
          }
        }
      }
      this.show_search_field_default();
      this.search_field_scale();
      this.search_results.html(content);
      return this.parsing = false;
    };
    Chosen.prototype.result_add_group = function(group) {
      if (!group.disabled) {
        group.dom_id = this.form_field.id + "chzn_g_" + group.array_index;
        return '<li id="' + group.dom_id + '" class="group-result">' + $("<div />").text(group.label).html() + '</li>';
      } else {
        return "";
      }
    };
    Chosen.prototype.result_add_option = function(option) {
      var classes;
      if (!option.disabled) {
        option.dom_id = this.form_field.id + "chzn_o_" + option.array_index;
        classes = option.selected && this.is_multiple ? [] : ["active-result"];
        if (option.selected) {
          classes.push("result-selected");
        }
        if (option.group_array_index != null) {
          classes.push("group-option");
        }
        return '<li id="' + option.dom_id + '" class="' + classes.join(' ') + '">' + $("<div />").text(option.text).html() + '</li>';
      } else {
        return "";
      }
    };
    Chosen.prototype.results_update_field = function() {
      this.result_clear_highlight();
      this.result_single_selected = null;
      return this.results_build();
    };
    Chosen.prototype.result_do_highlight = function(el) {
      var high_bottom, high_top, maxHeight, visible_bottom, visible_top;
      if (el.length) {
        this.result_clear_highlight();
        this.result_highlight = el;
        this.result_highlight.addClass("highlighted");
        maxHeight = parseInt(this.search_results.css("maxHeight"), 10);
        visible_top = this.search_results.scrollTop();
        visible_bottom = maxHeight + visible_top;
        high_top = this.result_highlight.position().top + this.search_results.scrollTop();
        high_bottom = high_top + this.result_highlight.outerHeight();
        if (high_bottom >= visible_bottom) {
          return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0);
        } else if (high_top < visible_top) {
          return this.search_results.scrollTop(high_top);
        }
      }
    };
    Chosen.prototype.result_clear_highlight = function() {
      if (this.result_highlight) {
        this.result_highlight.removeClass("highlighted");
      }
      return this.result_highlight = null;
    };
    Chosen.prototype.results_toggle = function() {
      if (this.results_showing) {
        return this.results_hide();
      } else {
        return this.results_show();
      }
    };
    Chosen.prototype.results_show = function() {
      var dd_top;
      if (!this.is_multiple) {
        this.selected_item.addClass("chzn-single-with-drop");
        if (this.result_single_selected) {
          this.result_do_highlight(this.result_single_selected);
        }
      }
      dd_top = this.is_multiple ? this.container.height() : this.container.height() - 1;
      this.dropdown.css({
        "top": dd_top + "px",
        "left": 0
      });
      this.results_showing = true;
      this.search_field.focus();
      this.search_field.val(this.search_field.val());
      return this.winnow_results();
    };
    Chosen.prototype.results_hide = function() {
      if (!this.is_multiple) {
        this.selected_item.removeClass("chzn-single-with-drop");
      }
      this.result_clear_highlight();
      this.dropdown.css({
        "left": "-9000px"
      });
      return this.results_showing = false;
    };
    Chosen.prototype.set_tab_index = function(el) {
      var ti;
      if (this.form_field_jq.attr("tabindex")) {
        ti = this.form_field_jq.attr("tabindex");
        this.form_field_jq.attr("tabindex", -1);
        if (this.is_multiple) {
          return this.search_field.attr("tabindex", ti);
        } else {
          this.selected_item.attr("tabindex", ti);
          return this.search_field.attr("tabindex", -1);
        }
      }
    };
    Chosen.prototype.show_search_field_default = function() {
      if (this.is_multiple && this.choices < 1 && !this.active_field) {
        this.search_field.val(this.default_text);
        return this.search_field.addClass("default");
      } else {
        this.search_field.val("");
        return this.search_field.removeClass("default");
      }
    };
    Chosen.prototype.search_results_click = function(evt) {
      var target;
      target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
      if (target.length) {
        this.result_highlight = target;
        return this.result_select();
      }
    };
    Chosen.prototype.search_results_mouseover = function(evt) {
      var target;
      target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
      if (target) {
        return this.result_do_highlight(target);
      }
    };
    Chosen.prototype.search_results_mouseout = function(evt) {
      if ($(evt.target).hasClass("active-result" || $(evt.target).parents('.active-result').first())) {
        return this.result_clear_highlight();
      }
    };
    Chosen.prototype.choices_click = function(evt) {
      evt.preventDefault();
      if (this.active_field && !($(evt.target).hasClass("search-choice" || $(evt.target).parents('.search-choice').first)) && !this.results_showing) {
        return this.results_show();
      }
    };
    Chosen.prototype.choice_build = function(item) {
      var choice_id, link;
      choice_id = this.form_field.id + "_chzn_c_" + item.array_index;
      this.choices += 1;
      this.search_container.before('<li class="search-choice" id="' + choice_id + '"><span>' + item.text + '</span><a href="javascript:void(0)" class="search-choice-close" rel="' + item.array_index + '"></a></li>');
      link = $('#' + choice_id).find("a").first();
      return link.click(__bind(function(evt) {
        return this.choice_destroy_link_click(evt);
      }, this));
    };
    Chosen.prototype.choice_destroy_link_click = function(evt) {
      evt.preventDefault();
      this.pending_destroy_click = true;
      return this.choice_destroy($(evt.target));
    };
    Chosen.prototype.choice_destroy = function(link) {
      this.choices -= 1;
      this.show_search_field_default();
      if (this.is_multiple && this.choices > 0 && this.search_field.val().length < 1) {
        this.results_hide();
      }
      this.result_deselect(link.attr("rel"));
      return link.parents('li').first().remove();
    };
    Chosen.prototype.result_select = function() {
      var high, high_id, item, position;
      if (this.result_highlight) {
        high = this.result_highlight;
        high_id = high.attr("id");
        this.result_clear_highlight();
        high.addClass("result-selected");
        if (this.is_multiple) {
          this.result_deactivate(high);
        } else {
          this.result_single_selected = high;
        }
        position = high_id.substr(high_id.lastIndexOf("_") + 1);
        item = this.results_data[position];
        item.selected = true;
        this.form_field.options[item.options_index].selected = true;
        if (this.is_multiple) {
          this.choice_build(item);
        } else {
          this.selected_item.find("span").first().text(item.text);
        }
        this.results_hide();
        this.search_field.val("");
        this.form_field_jq.trigger("change");
        return this.search_field_scale();
      }
    };
    Chosen.prototype.result_activate = function(el) {
      return el.addClass("active-result").show();
    };
    Chosen.prototype.result_deactivate = function(el) {
      return el.removeClass("active-result").hide();
    };
    Chosen.prototype.result_deselect = function(pos) {
      var result, result_data;
      result_data = this.results_data[pos];
      result_data.selected = false;
      this.form_field.options[result_data.options_index].selected = false;
      result = $("#" + this.form_field.id + "chzn_o_" + pos);
      result.removeClass("result-selected").addClass("active-result").show();
      this.result_clear_highlight();
      this.winnow_results();
      this.form_field_jq.trigger("change");
      return this.search_field_scale();
    };
    Chosen.prototype.results_search = function(evt) {
      if (this.results_showing) {
        return this.winnow_results();
      } else {
        return this.results_show();
      }
    };
    Chosen.prototype.winnow_results = function() {
      var found, option, part, parts, regex, result_id, results, searchText, startTime, startpos, text, zregex, _i, _j, _len, _len2, _ref;
      startTime = new Date();
      this.no_results_clear();
      results = 0;
      searchText = this.search_field.val() === this.default_text ? "" : $.trim(this.search_field.val());
      regex = new RegExp('^' + searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i');
      zregex = new RegExp(searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i');
      _ref = this.results_data;
      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
        option = _ref[_i];
        if (!option.disabled && !option.empty) {
          if (option.group) {
            $('#' + option.dom_id).hide();
          } else if (!(this.is_multiple && option.selected)) {
            found = false;
            result_id = option.dom_id;
            if (regex.test(option.text)) {
              found = true;
              results += 1;
            } else if (option.text.indexOf(" ") >= 0 || option.text.indexOf("[") === 0) {
              parts = option.text.replace(/\[|\]/g, "").split(" ");
              if (parts.length) {
                for (_j = 0, _len2 = parts.length; _j < _len2; _j++) {
                  part = parts[_j];
                  if (regex.test(part)) {
                    found = true;
                    results += 1;
                  }
                }
              }
            }
            if (found) {
              if (searchText.length) {
                startpos = option.text.search(zregex);
                text = option.text.substr(0, startpos + searchText.length) + '</em>' + option.text.substr(startpos + searchText.length);
                text = text.substr(0, startpos) + '<em>' + text.substr(startpos);
              } else {
                text = option.text;
              }
              if ($("#" + result_id).html !== text) {
                $("#" + result_id).html(text);
              }
              this.result_activate($("#" + result_id));
              if (option.group_array_index != null) {
                $("#" + this.results_data[option.group_array_index].dom_id).show();
              }
            } else {
              if (this.result_highlight && result_id === this.result_highlight.attr('id')) {
                this.result_clear_highlight();
              }
              this.result_deactivate($("#" + result_id));
            }
          }
        }
      }
      if (results < 1 && searchText.length) {
        return this.no_results(searchText);
      } else {
        return this.winnow_results_set_highlight();
      }
    };
    Chosen.prototype.winnow_results_clear = function() {
      var li, lis, _i, _len, _results;
      this.search_field.val("");
      lis = this.search_results.find("li");
      _results = [];
      for (_i = 0, _len = lis.length; _i < _len; _i++) {
        li = lis[_i];
        li = $(li);
        _results.push(li.hasClass("group-result") ? li.show() : !this.is_multiple || !li.hasClass("result-selected") ? this.result_activate(li) : void 0);
      }
      return _results;
    };
    Chosen.prototype.winnow_results_set_highlight = function() {
      var do_high;
      if (!this.result_highlight) {
        do_high = this.search_results.find(".active-result").first();
        if (do_high) {
          return this.result_do_highlight(do_high);
        }
      }
    };
    Chosen.prototype.no_results = function(terms) {
      var no_results_html;
      no_results_html = $('<li class="no-results">No results match "<span></span>"</li>');
      no_results_html.find("span").first().text(terms);
      return this.search_results.append(no_results_html);
    };
    Chosen.prototype.no_results_clear = function() {
      return this.search_results.find(".no-results").remove();
    };
    Chosen.prototype.keydown_arrow = function() {
      var first_active, next_sib;
      if (!this.result_highlight) {
        first_active = this.search_results.find("li.active-result").first();
        if (first_active) {
          this.result_do_highlight($(first_active));
        }
      } else if (this.results_showing) {
        next_sib = this.result_highlight.nextAll("li.active-result").first();
        if (next_sib) {
          this.result_do_highlight(next_sib);
        }
      }
      if (!this.results_showing) {
        return this.results_show();
      }
    };
    Chosen.prototype.keyup_arrow = function() {
      var prev_sibs;
      if (!this.results_showing && !this.is_multiple) {
        return this.results_show();
      } else if (this.result_highlight) {
        prev_sibs = this.result_highlight.prevAll("li.active-result");
        if (prev_sibs.length) {
          return this.result_do_highlight(prev_sibs.first());
        } else {
          if (this.choices > 0) {
            this.results_hide();
          }
          return this.result_clear_highlight();
        }
      }
    };
    Chosen.prototype.keydown_backstroke = function() {
      if (this.pending_backstroke) {
        this.choice_destroy(this.pending_backstroke.find("a").first());
        return this.clear_backstroke();
      } else {
        this.pending_backstroke = this.search_container.siblings("li.search-choice").last();
        return this.pending_backstroke.addClass("search-choice-focus");
      }
    };
    Chosen.prototype.clear_backstroke = function() {
      if (this.pending_backstroke) {
        this.pending_backstroke.removeClass("search-choice-focus");
      }
      return this.pending_backstroke = null;
    };
    Chosen.prototype.keyup_checker = function(evt) {
      var stroke, _ref;
      stroke = (_ref = evt.which) != null ? _ref : evt.keyCode;
      this.search_field_scale();
      switch (stroke) {
        case 8:
          if (this.is_multiple && this.backstroke_length < 1 && this.choices > 0) {
            return this.keydown_backstroke();
          } else if (!this.pending_backstroke) {
            this.result_clear_highlight();
            return this.results_search();
          }
          break;
        case 13:
          evt.preventDefault();
          if (this.results_showing) {
            return this.result_select();
          }
          break;
        case 27:
          if (this.results_showing) {
            return this.results_hide();
          }
          break;
        case 9:
        case 38:
        case 40:
        case 16:
          break;
        default:
          return this.results_search();
      }
    };
    Chosen.prototype.keydown_checker = function(evt) {
      var stroke, _ref;
      stroke = (_ref = evt.which) != null ? _ref : evt.keyCode;
      this.search_field_scale();
      if (stroke !== 8 && this.pending_backstroke) {
        this.clear_backstroke();
      }
      switch (stroke) {
        case 8:
          this.backstroke_length = this.search_field.val().length;
          break;
        case 9:
          this.mouse_on_container = false;
          break;
        case 13:
          evt.preventDefault();
          break;
        case 38:
          evt.preventDefault();
          this.keyup_arrow();
          break;
        case 40:
          this.keydown_arrow();
          break;
      }
    };
    Chosen.prototype.search_field_scale = function() {
      var dd_top, div, h, style, style_block, styles, w, _i, _len;
      if (this.is_multiple) {
        h = 0;
        w = 0;
        style_block = "position:absolute; left: -1000px; top: -1000px; display:none;";
        styles = ['font-size', 'font-style', 'font-weight', 'font-family', 'line-height', 'text-transform', 'letter-spacing'];
        for (_i = 0, _len = styles.length; _i < _len; _i++) {
          style = styles[_i];
          style_block += style + ":" + this.search_field.css(style) + ";";
        }
        div = $('<div />', {
          'style': style_block
        });
        div.text(this.search_field.val());
        $('body').append(div);
        w = div.width() + 25;
        div.remove();
        if (w > this.f_width - 10) {
          w = this.f_width - 10;
        }
        this.search_field.css({
          'width': w + 'px'
        });
        dd_top = this.container.height();
        return this.dropdown.css({
          "top": dd_top + "px"
        });
      }
    };
    return Chosen;
  })();
  get_side_border_padding = function(elmt) {
    var side_border_padding;
    return side_border_padding = elmt.outerWidth() - elmt.width();
  };
  root.get_side_border_padding = get_side_border_padding;
  SelectParser = (function() {
    function SelectParser() {
      this.options_index = 0;
      this.parsed = [];
    }
    SelectParser.prototype.add_node = function(child) {
      if (child.nodeName === "OPTGROUP") {
        return this.add_group(child);
      } else {
        return this.add_option(child);
      }
    };
    SelectParser.prototype.add_group = function(group) {
      var group_position, option, _i, _len, _ref, _results;
      group_position = this.parsed.length;
      this.parsed.push({
        array_index: group_position,
        group: true,
        label: group.label,
        children: 0,
        disabled: group.disabled
      });
      _ref = group.childNodes;
      _results = [];
      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
        option = _ref[_i];
        _results.push(this.add_option(option, group_position, group.disabled));
      }
      return _results;
    };
    SelectParser.prototype.add_option = function(option, group_position, group_disabled) {
      if (option.nodeName === "OPTION") {
        if (option.text !== "") {
          if (group_position != null) {
            this.parsed[group_position].children += 1;
          }
          this.parsed.push({
            array_index: this.parsed.length,
            options_index: this.options_index,
            value: option.value,
            text: option.text,
            selected: option.selected,
            disabled: group_disabled === true ? group_disabled : option.disabled,
            group_array_index: group_position
          });
        } else {
          this.parsed.push({
            array_index: this.parsed.length,
            options_index: this.options_index,
            empty: true
          });
        }
        return this.options_index += 1;
      }
    };
    return SelectParser;
  })();
  SelectParser.select_to_array = function(select) {
    var child, parser, _i, _len, _ref;
    parser = new SelectParser();
    _ref = select.childNodes;
    for (_i = 0, _len = _ref.length; _i < _len; _i++) {
      child = _ref[_i];
      parser.add_node(child);
    }
    return parser.parsed;
  };
  root.SelectParser = SelectParser;
}).call(this);
$(function(){
    $('.chozn').chosen();
});

  });
  //]]>
  </script>

</head>
<body>
<form action="/advanced">
              <div>               <em>Turns This</em>               <select title="Choose a Country" style="width:350px;" class="chozn">                 <option value="United States">United States</option>                  <option value="United Kingdom">United Kingdom</option>                  <option value="Afghanistan">Afghanistan</option>                  <option value="Albania">Albania</option>                  <option value="Algeria">Algeria</option>                  <option value="American Samoa">American Samoa</option>                  <option value="Andorra">Andorra</option>                  <option value="Angola">Angola</option>                  <option value="Anguilla">Anguilla</option>                  <option value="Antarctica">Antarctica</option>                  <option value="Antigua and Barbuda">Antigua and Barbuda</option>                  <option value="Argentina">Argentina</option>                  <option value="Armenia">Armenia</option>                  <option value="Aruba">Aruba</option>                  <option value="Australia">Australia</option>                  <option value="Austria">Austria</option>                  <option value="Azerbaijan">Azerbaijan</option>                  <option value="Bahamas">Bahamas</option>                  <option value="Bahrain">Bahrain</option>                  <option value="Bangladesh">Bangladesh</option>                  <option value="Barbados">Barbados</option>                  <option value="Belarus">Belarus</option>                  <option value="Belgium">Belgium</option>                  <option value="Belize">Belize</option>                  <option value="Benin">Benin</option>                  <option value="Bermuda">Bermuda</option>                  <option value="Bhutan">Bhutan</option>                  <option value="Bolivia">Bolivia</option>                  <option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option>                  <option value="Botswana">Botswana</option>                  <option value="Bouvet Island">Bouvet Island</option>                  <option value="Brazil">Brazil</option>                  <option value="British Indian Ocean Territory">British Indian Ocean Territory</option>                  <option value="Brunei Darussalam">Brunei Darussalam</option>                  <option value="Bulgaria">Bulgaria</option>                  <option value="Burkina Faso">Burkina Faso</option>                  <option value="Burundi">Burundi</option>                  <option value="Cambodia">Cambodia</option>                  <option value="Cameroon">Cameroon</option>                  <option value="Canada">Canada</option>                  <option value="Cape Verde">Cape Verde</option>                  <option value="Cayman Islands">Cayman Islands</option>                  <option value="Central African Republic">Central African Republic</option>                  <option value="Chad">Chad</option>                  <option value="Chile">Chile</option>                  <option value="China">China</option>                  <option value="Christmas Island">Christmas Island</option>                  <option value="Cocos (Keeling) Islands">Cocos (Keeling) Islands</option>                  <option value="Colombia">Colombia</option>                  <option value="Comoros">Comoros</option>                  <option value="Congo">Congo</option>                  <option value="Congo, The Democratic Republic of The">Congo, The Democratic Republic of The</option>                  <option value="Cook Islands">Cook Islands</option>                  <option value="Costa Rica">Costa Rica</option>                  <option value="Cote D'ivoire">Cote D'ivoire</option>                  <option value="Croatia">Croatia</option>                  <option value="Cuba">Cuba</option>                  <option value="Cyprus">Cyprus</option>                  <option value="Czech Republic">Czech Republic</option>                  <option value="Denmark">Denmark</option>                  <option value="Djibouti">Djibouti</option>                  <option value="Dominica">Dominica</option>                  <option value="Dominican Republic">Dominican Republic</option>                  <option value="Ecuador">Ecuador</option>                  <option value="Egypt">Egypt</option>                  <option value="El Salvador">El Salvador</option>                  <option value="Equatorial Guinea">Equatorial Guinea</option>                  <option value="Eritrea">Eritrea</option>                  <option value="Estonia">Estonia</option>                  <option value="Ethiopia">Ethiopia</option>                  <option value="Falkland Islands (Malvinas)">Falkland Islands (Malvinas)</option>                  <option value="Faroe Islands">Faroe Islands</option>                  <option value="Fiji">Fiji</option>                  <option value="Finland">Finland</option>                  <option value="France">France</option>                  <option value="French Guiana">French Guiana</option>                  <option value="French Polynesia">French Polynesia</option>                  <option value="French Southern Territories">French Southern Territories</option>                  <option value="Gabon">Gabon</option>                  <option value="Gambia">Gambia</option>                  <option value="Georgia">Georgia</option>                  <option value="Germany">Germany</option>                  <option value="Ghana">Ghana</option>                  <option value="Gibraltar">Gibraltar</option>                  <option value="Greece">Greece</option>                  <option value="Greenland">Greenland</option>                  <option value="Grenada">Grenada</option>                  <option value="Guadeloupe">Guadeloupe</option>                  <option value="Guam">Guam</option>                  <option value="Guatemala">Guatemala</option>                  <option value="Guinea">Guinea</option>                  <option value="Guinea-bissau">Guinea-bissau</option>                  <option value="Guyana">Guyana</option>                  <option value="Haiti">Haiti</option>                  <option value="Heard Island and Mcdonald Islands">Heard Island and Mcdonald Islands</option>                  <option value="Holy See (Vatican City State)">Holy See (Vatican City State)</option>                  <option value="Honduras">Honduras</option>                  <option value="Hong Kong">Hong Kong</option>                  <option value="Hungary">Hungary</option>                  <option value="Iceland">Iceland</option>                  <option value="India">India</option>                  <option value="Indonesia">Indonesia</option>                  <option value="Iran, Islamic Republic of">Iran, Islamic Republic of</option>                  <option value="Iraq">Iraq</option>                  <option value="Ireland">Ireland</option>                  <option value="Israel">Israel</option>                  <option value="Italy">Italy</option>                  <option value="Jamaica">Jamaica</option>                  <option value="Japan">Japan</option>                  <option value="Jordan">Jordan</option>                  <option value="Kazakhstan">Kazakhstan</option>                  <option value="Kenya">Kenya</option>                  <option value="Kiribati">Kiribati</option>                  <option value="Korea, Democratic People's Republic of">Korea, Democratic People's Republic of</option>                  <option value="Korea, Republic of">Korea, Republic of</option>                  <option value="Kuwait">Kuwait</option>                  <option value="Kyrgyzstan">Kyrgyzstan</option>                  <option value="Lao People's Democratic Republic">Lao People's Democratic Republic</option>                  <option value="Latvia">Latvia</option>                  <option value="Lebanon">Lebanon</option>                  <option value="Lesotho">Lesotho</option>                  <option value="Liberia">Liberia</option>                  <option value="Libyan Arab Jamahiriya">Libyan Arab Jamahiriya</option>                  <option value="Liechtenstein">Liechtenstein</option>                  <option value="Lithuania">Lithuania</option>                  <option value="Luxembourg">Luxembourg</option>                  <option value="Macao">Macao</option>                  <option value="Macedonia, The Former Yugoslav Republic of">Macedonia, The Former Yugoslav Republic of</option>                  <option value="Madagascar">Madagascar</option>                  <option value="Malawi">Malawi</option>                  <option value="Malaysia">Malaysia</option>                  <option value="Maldives">Maldives</option>                  <option value="Mali">Mali</option>                  <option value="Malta">Malta</option>                  <option value="Marshall Islands">Marshall Islands</option>                  <option value="Martinique">Martinique</option>                  <option value="Mauritania">Mauritania</option>                  <option value="Mauritius">Mauritius</option>                  <option value="Mayotte">Mayotte</option>                  <option value="Mexico">Mexico</option>                  <option value="Micronesia, Federated States of">Micronesia, Federated States of</option>                  <option value="Moldova, Republic of">Moldova, Republic of</option>                  <option value="Monaco">Monaco</option>                  <option value="Mongolia">Mongolia</option>                  <option value="Montenegro">Montenegro</option>                 <option value="Montserrat">Montserrat</option>                  <option value="Morocco">Morocco</option>                  <option value="Mozambique">Mozambique</option>                  <option value="Myanmar">Myanmar</option>                  <option value="Namibia">Namibia</option>                  <option value="Nauru">Nauru</option>                  <option value="Nepal">Nepal</option>                  <option value="Netherlands">Netherlands</option>                  <option value="Netherlands Antilles">Netherlands Antilles</option>                  <option value="New Caledonia">New Caledonia</option>                  <option value="New Zealand">New Zealand</option>                  <option value="Nicaragua">Nicaragua</option>                  <option value="Niger">Niger</option>                  <option value="Nigeria">Nigeria</option>                  <option value="Niue">Niue</option>                  <option value="Norfolk Island">Norfolk Island</option>                  <option value="Northern Mariana Islands">Northern Mariana Islands</option>                  <option value="Norway">Norway</option>                  <option value="Oman">Oman</option>                  <option value="Pakistan">Pakistan</option>                  <option value="Palau">Palau</option>                  <option value="Palestinian Territory, Occupied">Palestinian Territory, Occupied</option>                  <option value="Panama">Panama</option>                  <option value="Papua New Guinea">Papua New Guinea</option>                  <option value="Paraguay">Paraguay</option>                  <option value="Peru">Peru</option>                  <option value="Philippines">Philippines</option>                  <option value="Pitcairn">Pitcairn</option>                  <option value="Poland">Poland</option>                  <option value="Portugal">Portugal</option>                  <option value="Puerto Rico">Puerto Rico</option>                  <option value="Qatar">Qatar</option>                  <option value="Reunion">Reunion</option>                  <option value="Romania">Romania</option>                  <option value="Russian Federation">Russian Federation</option>                  <option value="Rwanda">Rwanda</option>                  <option value="Saint Helena">Saint Helena</option>                  <option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option>                  <option value="Saint Lucia">Saint Lucia</option>                  <option value="Saint Pierre and Miquelon">Saint Pierre and Miquelon</option>                  <option value="Saint Vincent and The Grenadines">Saint Vincent and The Grenadines</option>                  <option value="Samoa">Samoa</option>                  <option value="San Marino">San Marino</option>                  <option value="Sao Tome and Principe">Sao Tome and Principe</option>                  <option value="Saudi Arabia">Saudi Arabia</option>                  <option value="Senegal">Senegal</option>                  <option value="Serbia">Serbia</option>                  <option value="Seychelles">Seychelles</option>                  <option value="Sierra Leone">Sierra Leone</option>                  <option value="Singapore">Singapore</option>                  <option value="Slovakia">Slovakia</option>                  <option value="Slovenia">Slovenia</option>                  <option value="Solomon Islands">Solomon Islands</option>                  <option value="Somalia">Somalia</option>                  <option value="South Africa">South Africa</option>                  <option value="South Georgia and The South Sandwich Islands">South Georgia and The South Sandwich Islands</option>                  <option value="South Sudan">South Sudan</option>                  <option value="Spain">Spain</option>                  <option value="Sri Lanka">Sri Lanka</option>                  <option value="Sudan">Sudan</option>                  <option value="Suriname">Suriname</option>                  <option value="Svalbard and Jan Mayen">Svalbard and Jan Mayen</option>                  <option value="Swaziland">Swaziland</option>                  <option value="Sweden">Sweden</option>                  <option value="Switzerland">Switzerland</option>                  <option value="Syrian Arab Republic">Syrian Arab Republic</option>                  <option value="Taiwan, Republic of China">Taiwan, Republic of China</option>                  <option value="Tajikistan">Tajikistan</option>                  <option value="Tanzania, United Republic of">Tanzania, United Republic of</option>                  <option value="Thailand">Thailand</option>                  <option value="Timor-leste">Timor-leste</option>                  <option value="Togo">Togo</option>                  <option value="Tokelau">Tokelau</option>                  <option value="Tonga">Tonga</option>                  <option value="Trinidad and Tobago">Trinidad and Tobago</option>                  <option value="Tunisia">Tunisia</option>                  <option value="Turkey">Turkey</option>                  <option value="Turkmenistan">Turkmenistan</option>                  <option value="Turks and Caicos Islands">Turks and Caicos Islands</option>                  <option value="Tuvalu">Tuvalu</option>                  <option value="Uganda">Uganda</option>                  <option value="Ukraine">Ukraine</option>                  <option value="United Arab Emirates">United Arab Emirates</option>                  <option value="United Kingdom">United Kingdom</option>                  <option value="United States">United States</option>                  <option value="United States Minor Outlying Islands">United States Minor Outlying Islands</option>                  <option value="Uruguay">Uruguay</option>                  <option value="Uzbekistan">Uzbekistan</option>                  <option value="Vanuatu">Vanuatu</option>                  <option value="Venezuela">Venezuela</option>                  <option value="Viet Nam">Viet Nam</option>                  <option value="Virgin Islands, British">Virgin Islands, British</option>                  <option value="Virgin Islands, U.S.">Virgin Islands, U.S.</option>                  <option value="Wallis and Futuna">Wallis and Futuna</option>                  <option value="Western Sahara">Western Sahara</option>                  <option value="Yemen">Yemen</option>                  <option value="Zambia">Zambia</option>                  <option value="Zimbabwe">Zimbabwe</option>               </select>             </div>

<div>
<label class="home-only" for=                             "DomesticAssessment-tankTypeControlHome-Pumppackupto15mnodisplay">                                 <input type="radio" name=                                 "DomesticAssessment[tankTypeControlHome]"                                 id=                                 "DomesticAssessment-tankTypeControlHome-Pumppackupto15mnodisplay"                                 value=                                 "Pump pack up to 15m no display">Pump                                 pack up to 15m no                                 display</label><br>                                 <label class="home-only" for=                                 "DomesticAssessment-tankTypeControlHome-Pumppackupto15mincdisplay">                                 <input type="radio" name=                                 "DomesticAssessment[tankTypeControlHome]"                                 id=                                 "DomesticAssessment-tankTypeControlHome-Pumppackupto15mincdisplay"                                 value=                                 "Pump pack up to 15m inc display">Pump                                 pack up to 15m inc                                 display</label><br>                                 <label class="home-only" for=                                 "DomesticAssessment-tankTypeControlHome-Pumppackupto25mnodisplay">                                 <input type="radio" name=                                 "DomesticAssessment[tankTypeControlHome]"                                 id=                                 "DomesticAssessment-tankTypeControlHome-Pumppackupto25mnodisplay"                                 value=                                 "Pump pack up to 25m no display">Pump                                 pack up to 25m no                                 display</label><br>                                 <label class="home-only" for=                                 "DomesticAssessment-tankTypeControlHome-Pumppackupto25mincdisplay">                                 <input type="radio" name=                                 "DomesticAssessment[tankTypeControlHome]"                                 id=                                 "DomesticAssessment-tankTypeControlHome-Pumppackupto25mincdisplay"                                 value=                                 "Pump pack up to 25m inc display">Pump                                 pack up to 25m inc                                 display</label><br>                                 <label class="home-only" for=                                 "DomesticAssessment-tankTypeControlHome-XLgravitysystem">                                 <input type="radio" name=                                 "DomesticAssessment[tankTypeControlHome]"                                 id=                                 "DomesticAssessment-tankTypeControlHome-XLgravitysystem"                                 value="XL gravity system">XL                                 gravity system</label><br>                                 <label class="home-only" for=                                 "DomesticAssessment-tankTypeControlHome-XLpressuresystem">                                 <input type="radio" name=                                 "DomesticAssessment[tankTypeControlHome]"                                 id=                                 "DomesticAssessment-tankTypeControlHome-XLpressuresystem"                                 value="XL pressure system">XL                                 pressure system</label>

</div>
</form>
</body>

</html>
ndelargy commented 13 years ago

Re-posted up the html after replacing the tag brackets with entities, most of it is the chosen.jquery.js script so you can take that out and replace with a link to the script. Thanks, Neil

AlexCSR commented 11 years ago

I have that trouble too. Any solutions?

pfiller commented 11 years ago

I've not been able to recreate this. If either of you can share a fiddle demonstrating the problem, that would be the best way to figure out exactly where the issue is.

AlexCSR commented 11 years ago

I've found a solution. If I add attribute autocomplete="off" to all radios and checkboxes this trouble disappears.

pfiller commented 11 years ago

Thanks for sharing, @AlexCSR. Hopefully @ndelargy finds that solution, too.

ndelargy commented 11 years ago

Good work @AlexCSR thanks @pfiller