如何更改struts2选择下拉列表的默认行为

时间:2012-11-20 06:38:44

标签: javascript jquery html struts2

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

另一个是我需要禁用按下2并且再次按下一些延迟2的行为然后它开始将数字增加1,如20,21,22 ...依此类推,直到29。 / p>

我需要的行为是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()"/>

1 个答案:

答案 0 :(得分:1)

这是特定于浏览器的,Struts2根本不参与;

例如,Firefox的行为就像你描述的非常旧的版本,而在IE6(!)如果你按2和5,他会寻找“从2开始”然后“从5开始”(它永远不会找到25)通过键盘)。

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

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

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

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