Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何更改struts2 select下拉列表的默认行为_Javascript_Jquery_Html_Struts2 - Fatal编程技术网

Javascript 如何更改struts2 select下拉列表的默认行为

Javascript 如何更改struts2 select下拉列表的默认行为,javascript,jquery,html,struts2,Javascript,Jquery,Html,Struts2,我有一个struts2 select下拉列表,其中有数字。我需要使用键盘数字来选择其中的一个特定数字,这是默认的,它可以工作,但在这方面,我需要更具体地禁用行为,例如,如果我需要25,我可以键入2和5,但如果我键入2并延迟键入5,则它不工作,因此只选择20而不是25 另一个是我需要禁用的行为,当2被按下,并与一些延迟2再次按下,然后它开始增加1的数字像20,21,22。。。以此类推,最多29个 我需要的行为是,struts2下拉列表应该只选择我准确键入的内容 <s:select list=

我有一个struts2 select下拉列表,其中有数字。我需要使用键盘数字来选择其中的一个特定数字,这是默认的,它可以工作,但在这方面,我需要更具体地禁用行为,例如,如果我需要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()"/>

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

例如,Firefox的行为与您在非常旧的版本中描述的一样,而在IE6(!)中,如果您按2和5,他会查找“从2开始”,然后再查找“从5开始”(键盘上永远找不到25)

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

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

然后,您必须处理异常(没有元素匹配、什么也不做或做什么?),并决定如何让用户能够从头开始。有了计时器,就像浏览器一样,你不会有这个问题,但是如果你覆盖了计时器,你应该找到另一种方法(热键或者别的什么)

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