0

我有一个带有数字的 struts2 选择下拉列表。我需要使用默认的键盘数字在其中选择一个特定数字,它可以工作,但在此我需要更具体地禁用行为,例如,如果我需要 25,我可以输入 2 和 5,但如果我输入2 并延迟输入 5,然后它不起作用,因此只选择了 20 而不是 25。

另一个是我需要禁用这样的行为,即当按下 2 并再次按下延迟 2 时,它开始将数字增加 1,如 20、21、22……等等,直到 29。

虽然我需要的行为是 struts2 下拉列表应该只选择我准确键入的内容。

<s:select list="#{'0':'00','1':'01','2':'02','3':'03','4':'04','5':'05','6':'06','7':'07','8':'08',                 '9':'09','10':'10','11':'11','12':'12','13':'13','14':'14','15':'15','16':'16','17':'17','18':'18','19':'19','20':'20','21':'21','22':'22','23':'23','24':'24'}"  
name="workedHours" cssClass=" disable inputboxsmall" id="workedHours" onchange="calcTotTime()"/>
4

1 回答 1

1

那是特定于浏览器的,根本不涉及Struts2;

例如,Firefox 的行为就像您在非常旧的版本中描述的那样,而在 IE6(!)中,如果您按 2 和 5,他会查找“以 2 开头”然后“以 5 开头”(它永远不会通过键盘找到 25) .

页面准备好后,您可以使用 jQuery 将自定义行为添加到您的选择中。

例如,在onkeyup事件中添加一个 javascript 函数调用,它会记住以前的数字字符,将新字符附加到它们并将属性重新分配给selected新的相应元素。

然后你必须处理异常(没有元素匹配,什么都不做或什么?),并决定如何让用户从头开始重新开始。使用计时器,就像浏览器一样,您没有这个问题,但是如果您覆盖计时器,您应该找到另一种方式(热键或其他方式)。

就个人而言,我不认为覆盖浏览器行为是一件好事,特别是因为它们已经针对大多数用例进行了优化......

于 2012-11-20T09:50:32.580 回答