asp:下拉自动完成,暂停键入

时间:2013-08-30 00:37:35

标签: asp.net drop-down-menu

我有一个标准的asp:下拉控件,默认情况下,这允许用户输入它,它将自动从列表中选择最匹配的项目。他们也可以放下列表。

我的用户输入的工作订单号暂停,如下所示:

  • 输入前4个字符
  • 请参阅文档以查找接下来的4个字符(暂停键入)
  • 输入下一个字符

asp标记示例

 <asp:DropDownList runat="server" ID="uxWorkOrder" Width="386"></asp:DropDownList>

问题

  1. 暂停输入下拉列表只会过滤前4个字符,允许用户暂停和继续操作的最佳方法是什么?

  2. 用户如何将文本重置为空白而不使用鼠标滚动到顶部的“空白项目”(最好按空格键)?

1 个答案:

答案 0 :(得分:3)

关于问题#1 ,我认为您无法控制该行为。 (我可能错了)。

编辑包含问题#1的答案:因为,无法定义暂停的时间长度;我在这里假设开始对组合进行新的搜索;应该按空格

function checkBlank() {
            if (event.keyCode == 32) {
                document.getElementById('ddlMain').value = '';
                document.getElementById('txtSearchText').value = '';
                return false;
            }

            document.getElementById('txtSearchText').value = document.getElementById('txtSearchText').value + String.fromCharCode(event.which);

            makeSelection();

            return true;
        }

        function makeSelection() {
            var options = document.getElementById('ddlMain').options;
            var matchString = document.getElementById('txtSearchText').value.toLowerCase();
            for (i = 0; i < options.length; i++) {
                if (options[i].value.toLowerCase().indexOf(matchString) == 0) {
                    options[i].selected = true;
                    return;
                }
            }
        }

    <asp:DropDownList runat="server" ID="ddlMain" onkeydown="javascript:return checkBlank();">
                <asp:ListItem Text="" />
                <asp:ListItem Text="Apple" />
                <asp:ListItem Text="Orange" />
                <asp:ListItem Text="Banana" />
    </asp:DropDownList>

<asp:HiddenField runat="server" ID="txtSearchText" />

仅针对Question#2,您可以使用如下所示的javascript

function checkBlank() {
    if (event.keyCode == 32) {
        document.getElementById('ddlMain').value = '';
        return false;
    }

    return true;
}

<asp:DropDownList runat="server" ID="ddlMain" onkeydown="javascript:return checkBlank();">
            <asp:ListItem Text="" />
            <asp:ListItem Text="Apple" />
            <asp:ListItem Text="Orange" />
            <asp:ListItem Text="Banana" />
</asp:DropDownList>