表单可以包含大多数常见的图形界面元素,包括输入字段、单选按钮、复选框、弹出菜单和输入列表。另外,HTML 表单可以包含密码字段,这种控件可以避免用户的输入被别人偷看。
在填写表单之后,单击表单上的 Submit 按钮,会将表单的信息发送到 Web 服务器,在服务器上服务器端脚本会解释并操作这些数据。通常,将数据存储在数据库中供以后使用。在服务器端存储数据之前,需要确保用户输入的数据是“干净”的,也就是说,数据是准确的且具有正确的格式。JavaScript 是检查数据的好方法,这种技术称为表单验证(form validation)。尽管服务器端脚本可以完成验证(而且应该作为预防措施,因为有些用户会在浏览器中关闭 JavaScript 功能),但是在客户机上用 JavaScript 进行验证要快得多,而且用户操作的效率也更高。
在本章中,你将学习如何使用 JavaScript 确保表单包含有效的信息,针对另一个字段中的数据检查一个字段中的数据,以及突出显示错误的信息,让用户知道需要修改什么。
标签
属性
意义
form
这个标签包含下面的任何标签,构成有效的 HTML 表单
action
在 Web 服务器上处理数据的服务器端脚本的名称
input
这个标签显示不同类型的表单字段,具体取决于 type 属性的值
name
主要用来对单选按钮进行分组
maxlength
用户可以在这个字段中输入的数据的最大长度
size
在页面上显示的字符数量
type
所需的输入控件类型,有效值是 button、checkbox、image、password、radio、reset、submit 和 t ext
value
预先为这个表单字段设置的值
label
用来为没有内置标签的控件指定标签,比如文本字段、复选框、单选按钮和菜单
for
将标签与特定元素的 id 关联起来
option
在 select 标签中可用的选项
selected
指出这个选项是否作为默认选项
value
每个选项的预设值
select
这种表单字段显示弹出菜单或滚动列表(取决于 size 属性)
size
在页面上显示的选项数量。如果这个属性设置为 1,或者没有提供这个属性,就会显示弹出菜单
选择并转移导航菜单
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <!DOCTYPE html > <html > <head > <title > Select and Go Navigation</title > <link rel ="stylesheet" href ="script01.css" /> <script src ="script01.js" > </script > </head > <body > <form action ="gotoLocation.cgi" class ="centered" > <select id ="newLocation" > <option selected > Select a topic</option > <option value ="script06.html" > Cross-checking fields</option > <option value ="script07.html" > Working with radio buttons</option > <option value ="script08.html" > Setting one field with another</option > <option value ="script09.html" > Validating Zip codes</option > <option value ="script10.html" > Validating email addresses</option > </select > <noscript > <input type ="submit" value ="Go There!" /> </noscript > </form > </body > </html >
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 window .onload = initFormwindow .onunload = function ( ) {}function initForm ( ) { document .getElementById ("newLocation" ).selectedIndex = 0 document .getElementById ("newLocation" ).onchange = jumpPage } function jumpPage ( ) { var newLoc = document .getElementById ("newLocation" ) var newPage = newLoc.options [newLoc.selectedIndex ].value if (newPage != "" ) { window .location = newPage } }
动态地改变菜单
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <!DOCTYPE html > <html > <head > <title > Dynamic Menus</title > <script src ="script02.js" > </script > </head > <body > <form action ="#" > <select id ="months" > <option value ="" > Month</option > <option value ="0" > January</option > <option value ="1" > February</option > <option value ="2" > March</option > <option value ="3" > April</option > <option value ="4" > May</option > <option value ="5" > June</option > <option value ="6" > July</option > <option value ="7" > August</option > <option value ="8" > September</option > <option value ="9" > October</option > <option value ="10" > November</option > <option value ="11" > December</option > </select > <select id ="days" > <option > Day</option > </select > </form > </body > </html >
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 window .onload = initFormfunction initForm ( ) { document .getElementById ("months" ).selectedIndex = 0 document .getElementById ("months" ).onchange = populateDays } function populateDays ( ) { var monthDays = new Array (31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 ) var monthStr = this .options [this .selectedIndex ].value if (monthStr != "" ) { var theMonth = parseInt (monthStr) document .getElementById ("days" ).options .length = 0 for (var i = 0 ; i < monthDays[theMonth]; i++) { document .getElementById ("days" ).options [i] = new Option (i + 1 ) } } }
参考
第 6 章 表单处理-图灵社区
http://www.ituring.com.cn/book/tupubarticle/4839