0

サイトで Chosen Select Box Jquery プラグインを使用しています。選択のオプションは ajax で更新されるため、1 つのボックスで何かを選択すると、次のボックスのオプションが表示されます。

ほとんど機能していますが、2 番目のボックス オプションをクリックすると、3 番目のボックス オプションが表示されません。FireBug で次のようなエラーが表示されます。

TypeError: 項目が未定義です

item.selected = true;

それはChosen Boxのjsファイルにあると言います。

JS =======================

 Chosen.prototype.result_select = function(evt) {
  var high, high_id, item, position;
  if (this.result_highlight) {
    high = this.result_highlight;
    high_id = high.attr("id");
    this.result_clear_highlight();
    if (this.is_multiple) {
      this.result_deactivate(high);
    } else {
      this.search_results.find(".result-selected").removeClass("result-selected");
      this.result_single_selected = high;
      this.selected_item.removeClass("chzn-default");
    }
    high.addClass("result-selected");
    position = high_id.substr(high_id.lastIndexOf("_") + 1);
    item = this.results_data[position];
    item.selected = true;                                <---------- Error
    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);
      if (this.allow_single_deselect) this.single_deselect_control_build();
    }
    if (!(evt.metaKey && this.is_multiple)) this.results_hide();
    this.search_field.val("");
    if (this.is_multiple || this.form_field_jq.val() !== this.current_value) {
      this.form_field_jq.trigger("change", {
        'selected': this.form_field.options[item.options_index].value
      });
    }
    this.current_value = this.form_field_jq.val();
    return this.search_field_scale();
  }
};

私はそれを理解しようと何時間も費やしましたが、できません。どんな助けでも大歓迎です。

4

1 に答える 1

6

同じ問題が発生した場合は、選択した HTML に空のオプション タグを追加すると、正常に動作するはずです。

編集: knuturOが指摘したように、配列のインデックスは 0 ですが、ほとんどの選択されたインデックスは 1 から始まります。空の値を追加することで、配列のインデックスと選択されたインデックスの間に不一致がなくなりました。たとえば、ドロップダウンも同じように機能します。

于 2014-08-11T10:27:20.833 に答える