我有一个标准的asp:下拉控件,默认情况下,这允许用户输入它,它将自动从列表中选择最匹配的项目。他们也可以放下列表。
我的用户输入的工作订单号暂停,如下所示:
asp标记示例
<asp:DropDownList runat="server" ID="uxWorkOrder" Width="386"></asp:DropDownList>
问题
暂停输入下拉列表只会过滤前4个字符,允许用户暂停和继续操作的最佳方法是什么?
用户如何将文本重置为空白而不使用鼠标滚动到顶部的“空白项目”(最好按空格键)?
答案 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>