则将焦点重新设置到number文本框中,那么在该文本框中根本就不可能输入不合法的数据,否则文本框就不能失去焦点,当然也就不可能提交表单数据了。
(2)OnChange
OnChange事件和OnBlur事件相似,都要在失去焦点之后触发,不同之处在于,只有当用户修改了文本框中的文本,然后失去焦点后才触发,如果用户没有修改文本,失去焦点 时是不会触发OnChange事件的,同样可以在OnChange事件处理函数中进行数据有效性验证,在例3-49可以进行如下修改:
和OnBlur不同,在OnChange事件处理函数中进行校验不会把焦点强制定于该文本框 中,如果在number文本框中输入了不合法的数据,出现警告对话框后会将焦点重新设置到number文本框中,此时如果不进行任何改动,可以将焦点移动到其他表单元素上而不再次触发OnChange事件处理函数。
建议不要使用OnBlur事件处理函数中进行数据有效性验证,而是使用OnChange事件处理函数中进行验证,然后在表单提交时再进行一次验证,这样可以给予用户较大的自由。
(3)OnFocus
当文本框得到焦点时,触发OnFocus事件。 (4)OnSelect
当文本框中文本被选定时,触发OnSelect事件。 (5)OnKeyDown
文本框在获得焦点的状态下,用户按下一个键时触发OnKeyDown事件。 (6)OnKeyUp
文本框在获得焦点的状态下,用户松开一个键时触发OnKeyup事件。 (7)OnKeyPress
文本框在获得焦点的状态下,用户按键动作完成之后出发OnKeyPress事件,所以在用户按键的过程中先触发OnKeyDown事件,然后触发OnKeyUp事件,在OnKeyDown事件和OnKeyUp事件匹配完成之后触发OnKeyPress事件。
这样,就可以修改例3-49,在例3-49中的校验方式是对于输入文本进行校验,这是一种被动的校验方式,其实可以考虑采用一种更加主动的校验方式,通过编写OnKeyPress事件处理函数后,可以保证在文本框中只能输入数字,而屏蔽了其他按键,这样同样保证了在number文本框中只能输入数字。如例3-50所示(该例使用了多个事件,建议读者将其分开一个一个测试)。
例3-50 通过屏蔽非数字按键主动进行校验
5.口令对象
口令对象和文本框对象十分相似,不同之处只在于在口令对象中,输入文本不会直接显示出来,而是以星号代替。它的属性、方法与事件和文本框对象是一致的。不过,它的type
属性值为password。
6.文本区对象
虽然文本区对象和文本框对象在HTML格式上有较大的差异(文本区对象使用
7.隐藏对象
隐藏对象是一个比较特殊的对象,它并不在表单中显示出来。除了隐藏对象的type属性值为hidden之外,隐藏对象和文本框对象在属性上是一致的,但隐藏对象没有方法可以调用,也没有事件产生。所以,一般不对隐藏对象进行编程控制,隐藏对象大多用于在表单数据提交时传递数据。例如,可以将文本框的输入数据进行转换后存放在隐藏对象中,然后程序通过访问隐藏对象就可以直接获取转换后的数据。
3.6.8 按钮对象
1.按钮对象的属性、方法和事件
按钮对象的属性、方法和事件如表3-19所示,随后我们将讲解它们的详细内容。
表3-19 按钮对象的属性、方法和事件
属性 form name type value 方法 btur() click() focus() handleEvent() 事件 OnBlur OnClick OnFocus OnMouseDown OnMOuscUp 2.属性 (1)form
form属性反映了包含该按钮的表单。 (2)name
name属性即为按钮的名称。 (3)type
按钮的type属性值为button。 (4)value
value属性就是显示在按钮上的文本。可以通过修改按钮的value属性值给HTML页面带来动感,并且在不同的状态下可以给予用户不同的提示信息。
例如,我们可以设计一个按钮,在单击后在On和Off状态之间不断地翻转。 下面是使得按钮状态翻转的函数;

