2013-03-27 163 views
2

http://harvesthq.github.com/chosen/jquery选择:填充多个选择与选项卡按钮

这里是示例页面,它有多选择输入。

当我开始输入时,它突出显示选项。在这一刻,当我按Tab键时,焦点在其他输入上移动,并且将先前的输入留空。我想在用户开始输入时添加新的选项,例如,用户输入'af','Afganistan'突出显示,用户按Tab键并且必须添加Afganistan。

我试图处理标签按键,并做$(optionid).click()模拟鼠标或输入选择,但它不能正常工作

回答

2

我已经尝试了所有我能想到,当涉及到所选择的顶部添加事件处理但无济于事。我已经尝试捕捉标签按下并模拟突出显示的项目上的点击并模拟输入字段上的Enter键,但无济于事。

然而,我认为如果你愿意黑客选择,只需要一些非常小的变化。

第一个变化:

Chosen.prototype.keydown_checker = function(evt) { 
    ... 
    //Replace the existing "case 9:" with this: 
    case 9: //tab 
     if(!this.is_multiple){ 
      if (this.results_showing && !this.is_multiple) { 
       this.result_select(evt); 
      } 
      this.mouse_on_container = false;   
     } 
     else { 
      evt.preventDefault(); 
     } 
     break; 
    ... 
} 

第二个变化:

AbstractChosen.prototype.keyup_checker = function(evt) { 
    ... 
    case 9: //Simply add this above "case 13:" and remove "case 9:" from further down the switch statement 
    case 13: //Enter 
    ... 
} 

编辑:我现在已经测试了使用其附带的示例页面,它似乎是工作。如预期。

+0

谢谢,我会尝试 – ysokolovsky 2013-03-27 21:47:20

+0

在1.5版本中,我只需要改变'''案例9: 如果(this.results_showing){ this.result_select( EVT); } this.mouse_on_container = false; break;''' – Bob 2016-05-05 16:05:25

0

我已经做了一些改变,并得到我想要的。 thx,Peter Herdenborg!

AbstractChosen.prototype.keyup_checker = function (evt) { ... 
    ... 
    case 9: 
     if (this.search_field.val().length != 0) { 
       if (this.results_showing) return this.result_select(evt); 
     } 
     break; 
    case 13: 
    ... 

和第二

Chosen.prototype.keydown_checker = function (evt) { 
     case 9: 
      if (!this.is_multiple) { 
       if (this.results_showing && !this.is_multiple) { 
         this.result_select(evt); 
        } 
       this.mouse_on_container = false; 
      } 
      else { 
      if (this.search_field.val().length != 0) evt.preventDefault(); 
     } 
     break;