1

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

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

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

asp 标记示例

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

问题

  1. 在输入下拉列表时暂停仅过滤前 4 个字符,允许用户暂停并继续的最佳方法是什么?

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

4

1 回答 1

3

关于您的Question#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>
于 2013-08-30T00:49:10.230 回答