jQuery:停止<select>列表移动按键?</select>

时间:2011-02-17 02:04:55

标签: javascript jquery

我有这样的HTML / jQuery:

<select id="userlist" name="userlist">
<option value=''></option>
<option value="ADJUDICATION">ADJUDICATION</option>
<option value="ADMINISTRATIVE">ADMINISTRATIVE LAW</option> # etc
</select>

$("#userlist").keypress(function(e) {
    windows_id += String.fromCharCode(e.which).toUpperCase();
    // Only do anything if we have more than 1 initial.
    if (windows_id.length > 1) {
    // do stuff here 
    }
});

如您所见,如果用户输入两个以上的字符,我想做一些特别的事情。

我的问题是:在用户输入一个字符后,有什么方法可以防止<select>列表移动,而是在用户键入两个字符之前保持静止状态?

谢谢!

2 个答案:

答案 0 :(得分:2)

这是浏览器行为,无法覆盖或停止。如果您想要这种特定的行为,那么您将需要使用javascript实现类似控件的选择。

答案 1 :(得分:0)

我能够通过从绑定到keydown事件(不是keypress)的函数返回false来停止选择更改:

$('#userlist').keydown(function(e) {
    // ...stuff...
    return false;
});

从事件处理程序调用{​​{1}}也应该也可以。

这适用于Firefox 3.5.15(在Fedora 12上)。其他浏览器可能会在其他键事件上滚动选择,因此您可能也必须捕获它们(事件处理程序只返回false)。

希望这有帮助!