Twitter bootstrap 要完成的引导typeahead选项卡

Twitter bootstrap 要完成的引导typeahead选项卡,twitter-bootstrap,typeahead,Twitter Bootstrap,Typeahead,我在一个标准引导typeahead元素中遇到了一些问题,该元素附带了一个onchange事件,如下所示: <input id="element1" /> <script type="text/javascript"> var $element1 = $j("#element1"); var $output = $j("#output"); $element1.typeahead({ "source": ["apple", "airplane", "a

我在一个标准引导typeahead元素中遇到了一些问题,该元素附带了一个onchange事件,如下所示:

<input id="element1" />
<script type="text/javascript">
  var $element1 = $j("#element1");
  var $output = $j("#output");

  $element1.typeahead({
    "source": ["apple", "airplane", "astronaut", "balloon", "banana"],
    "items": 25
  });

  $element1.on("change", function() {
    console.log("onchange fired");
  });
</script>

变量$element1=$j(“#element1”);
var$output=$j(“#output”);
$element1.5元({
“来源”:[“苹果”、“飞机”、“宇航员”、“气球”、“香蕉”],
“项目”:25
});
$element1.on(“更改”,函数(){
log(“onchange-fired”);
});

问题:

1) 如果开始键入值并按tab键,则typeahead将自动完成,但用户不会移动到下一个输入字段。我认为这种行为是错误的。选项卡应将用户带到下一个字段。然而,也许有一个很好的理由来解释它为什么会这样做?有人知道吗

2) 如果我附加一个jquery onchange事件,那么它将在firefox中被触发两次(但不是chrome或IE)。为什么会这样?您可以按照下一段中的步骤使用以下JSFIDLE进行测试:

开始在第一个输入字段中键入“a”,然后按tab键。字段将自动完成,onchange事件将被触发,光标将保留在输入字段中(这是问题1)。再次按tab键将光标移动到下一个字段,此时firefox(不是chrome或IE)将再次触发onchange事件,如JSFIDLE中我的输出div所示

我知道我可以在onchange事件中捕获当前值,并将其存储在元素的属性(如data oldvalue)上,并且仅当当前值与旧值不同时才执行onchange。然而,我真正想知道的是,为什么firefox两次触发onchange事件,而chrome和ie却没有

我有Windows 7,我使用的浏览器版本是:
Firefox 18.0
铬23.0.1271.97米

IE 8(浏览器模式IE8,文档模式IE8标准)

问题1:我不认为这是个问题,因为在第一个选项卡上,它会自动完成前面的键入,在第二个选项卡上,光标会转到下一个字段,因为如果您想更改选择,那么您仍然在同一字段上进行任何更改,就像在我的例子中,我在Typeahead complete上触发了一个ajax请求,并更新了表单中的一些字段,如果用户希望更改选择,那么用户可以删除以前的选择并尝试一些新值,所以我认为将光标放在同一个字段上会有好处

问题2:我在Chrome 24.0.1和firefox 16.0.1上试过你的Js fiddle,在这两种情况下它只触发了一个事件,可能是你的firefox版本有一些问题