JavaScript 表单

form(表单)

form(表单)对于每个Web开发人员来说,应该是再熟悉不过的东西了,它是页面与Web服务器交互过程中最重要的信息来源。表单form的常用属性和常用的控件input如下:

1、form action 属性

action 属性规定当提交表单时,向何处发送表单数据。当提交表单时,发送表单数据到名为"a.html "的文件(处理输入):

<form action="a.html " method="get" >
   First name: <input type="text" name="fname"><br>
   Last name: <input type="text" name="lname"><br>
   <input type="submit" value="提交">
 </form>

2、form method属性

method属性可设置或者返回表单method属性值。制订了如何发送表单数据 (表单数据提交地址在action属性中指定)。
method 属性可以是get,在 URL 中添加表单数据,也可以使用使用post方法提交表单数据。

<form action="a.php " method="get" >
         学号: <input type="text" name="stuId">  

            <input type="submit" value="查询">
 </form> 

3、表单控件

3.1、 input控件

input表示form表单中的一种输入对象,其又随type类型的不同而分为文本输入框,type="password"为密码输入框,type=“radio”/type="checkbox"为单选/复选框,type="button"为普通按钮等。其中type=“text”,表示输入类型是文本框,输入单行文本,这是我们见的最多也是使用最多的,比如登陆输入用户名,注册输入电话号码,电子邮件,家庭住址等等。当然这也是input的默认类型。

input控件的常用属性如下:

  • name:同样是表示的该文本输入框名称。
  • size:输入框的长度大小。 maxlength:输入框中允许输入字符的最大数。
  • value:输入框中的默认值,根据表单name属性值和文本框name属性值可以访问到文本框对象,再访问文本框value的属性就可以得到文本框中的值。这种方式同样使用于密码框,和下拉列表框。如下:表单名称.控件名称.value 或 表单名称.elements[下标] .value
  • readonly:表示该框中只能显示,不能添加修改
  • placeholder:是指文本框或处于未输入状态并且未获得光标焦点时,降低显示输入提示文字不透明度,如搜索框效果:
<input
   type="text"
   placeholder="点击这里搜索">

,由于placeholder是html5的新属性,仅支持html5的浏览器才支持placeholder。

实现form表单提交的onclick和onsubmit:
type= “submit” and type=“reset”,分别是“提交”和“重置”两按钮。submit主要功能是将form中所有内容进行提交action页处理,reset则起快速清空所有填写内容的功能。在表单中加上οnsubmit="return false;"可以阻止表单提交。
onsubmit只能表单上使用,提交表单前会触发, onclick是普通按钮等控件使用, 用来触发点击事件。在提交表单前,一般都会进行数据验证,可以选择在按钮上的onclick中验证,也可以在表单上的onsubmit中验证。

下表列出了表单对象的常用属性、方法。示例中myForm是一个表单对象。
表单对象常用方法

方法意义示例
reset()将表单中各元素恢复到缺省值,与单击重置按钮(reset)的效果是一样的myForm.reset()
submit()提交表单,与单击提交按钮(submit)效果是一样的myForm.submit()

4、 表单控件元素对象的常用方法和input 控件常用方法

方法意义
blur()让光标离开当前元素
focus()让光标落到当前元素上
select()用于种类为text,textarea,password的元素,选择用户输入的内容
click()模仿鼠标单击当前元素

表单对象常用事件:onfocus:在表单元素收到输入焦点时触发;onblur:在表单元素失去输入焦点时触发。如:文本框失去焦点时,以下代码将调用myfun()函数。

<input type="text" value="" name="txtName" onblur ="myfun( )" >

5、Select 对象

Select 对象代表 HTML 表单中的一个下拉列表。
在 HTML 表单中, 标签每出现一次,一个 Select 对象就会被创建。
您可通过遍历表单的 elements[] 数组来访问某个 Select 对象,或者使用 document.getElementById()。

5.1、Select 对象集合

集合描述
options[]返回包含下拉列表中的所有选项的一个数组。

5.2、Select 对象属性

属性描述
disabled设置或返回是否应禁用下拉列表。
form返回对包含下拉列表的表单的引用。
id设置或返回下拉列表的 id。
length返回下拉列表中的选项数目。
multiple设置或返回是否选择多个项目。
name设置或返回下拉列表的名称。
selectedIndex设置或返回下拉列表中被选项目的索引号。
size设置或返回下拉列表中的可见行数。
tabIndex设置或返回下拉列表的 tab 键控制次序。
type返回下拉列表的表单类型。

5.3、Select 对象方法

方法描述
add()向下拉列表添加一个选项。
blur()从下拉列表移开焦点。
focus()在下拉列表上设置焦点。
remove()从下拉列表中删除一个选项。

5.4、Select 对象事件句柄

事件句柄描述
onchange当改变选择时调用的事件句柄。

6、操作表单

用JavaScript操作表单和操作DOM是类似的,因为表单本身也是DOM树。
不过表单的输入框、下拉框等可以接收用户输入,所以用JavaScript来操作表单,可以获得用户输入的内容,或者对一个输入框设置新的内容。
HTML表单的输入控件主要有以下几种:
• 文本框,对应的,用于输入文本;

•	口令框,对应的<input type="password">,用于输入口令;

•	单选框,对应的<input type="radio">,用于选择一项;

•	复选框,对应的<input type="checkbox">,用于选择多项;

•	下拉框,对应的<select>,用于选择一项;

•	隐藏文本,对应的<input type="hidden">,用户不可见,但表单提交时会把隐藏文本发送到服务器。

6.1、获取值

如果我们获得了一个节点的引用,就可以直接调用value获得对应的用户输入值:

<input type="text" id="email">
var input = document.getElementById('email');
input.value; // '用户输入的值'

这种方式可以应用于text、password、hidden以及select。但是,对于单选框和复选框,value属性返回的永远是HTML预设的值,而我们需要获得的实际是用户是否“勾上了”选项,所以应该用checked判断:

<label><input type="radio" name="weekday" id="monday" value="1"> Monday</label>
<label><input type="radio" name="weekday" id="tuesday" value="2"> Tuesday</label>
var mon = document.getElementById('monday');
var tue = document.getElementById('tuesday');
mon.value; // '1'
tue.value; // '2'
mon.checked; // true或者false
tue.checked; // true或者false

6.2、设置值

设置值和获取值类似,对于text、password、hidden以及select,直接设置value就可以:

<input type="text" id="email">
var input = document.getElementById('email');
input.value = 'test@qq.com'; // 文本框的内容已更新

对于单选框和复选框,设置checked为true或false即可。

6.3、HTML5控件

HTML5新增了大量标准控件,常用的包括date、datetime、datetime-local、color等,它们都使用标签:

<input type="date" value="2015-07-01">
2015-07-01
<input type="datetime-local" value="2015-07-01T02:03:04">
2015-07-01T02:03:04
<input type="color" value="#ff0000">

不支持HTML5的浏览器无法识别新的控件,会把它们当做type="text"来显示。支持HTML5的浏览器将获得格式化的字符串。例如,type="date"类型的input的value将保证是一个有效的YYYY-MM-DD格式的日期,或者空字符串。

6.4、提交表单

JavaScript可以以两种方式来处理表单的提交

方式一是通过<form>元素的submit()方法提交一个表单,例如,响应一个<button>的click事件,在JavaScript代码中提交表单:

<!-- HTML -->
<form id="test-form">
    <input type="text" name="test">
    <button type="button" onclick="doSubmitForm()">Submit</button>
</form>

<script>
function doSubmitForm() {
    var form = document.getElementById('test-form');
    // 可以在此修改form的input...
    // 提交form:
    form.submit();
}
</script>

这种方式的缺点是扰乱了浏览器对form的正常提交。浏览器默认点击<button type="submit">时提交表单,或者用户在最后一个输入框按回车键。

第二种方式是响应本身的onsubmit事件,在提交form时作修改:

<!-- HTML -->
<form id="test-form" onsubmit="return checkForm()">
    <input type="text" name="test">
    <button type="submit">Submit</button>
</form>

<script>
function checkForm() {
    var form = document.getElementById('test-form');
    // 可以在此修改form的input...
    // 继续下一步:
    return true;
}
</script>

注意要return true来告诉浏览器继续提交,如果return false,浏览器将不会继续提交form,这种情况通常对应用户输入有误,提示用户错误信息后终止提交form。

7、数据验证

1.	数据验证
	数据验证用于确保用户输入的数据是有效的。
2.	典型的数据验证有:
    必需字段是否有输入?
    用户是否输入了合法的数据?
    在数字字段是否输入了文本?
    
3.大多数情况下,数据验证用于确保用户正确输入数据。
4.	数据验证可以使用不同方法来定义,并通过多种方式来调用。
5.	服务端数据验证是在数据提交到服务器上后再验证。
6.	客户端数据验证 side validation是在数据发送到服务器前,在浏览器上完成验证。

7.	HTML 约束验证
    HTML5 新增了 HTML 表单的验证方式:约束验证(constraint validation)。
  约束验证是表单被提交时浏览器用来实现验证的一种算法。
  约束验证 HTML 输入属性
属性描述
disabled规定输入的元素不可用
max规定输入元素的最大值
min规定输入元素的最小值
pattern规定输入元素值的模式
required规定输入元素字段是必需的
type规定输入元素的类型
具体例子
<!DOCTYPE html>
		<html>
		<head>
		<meta charset="utf-8">
		</head>
		<body>
		 
		<h1>JavaScript 验证数字输入</h1>
		 
		<p>请输入 110 之间的数字:</p>
		 
		<input id="numb">
		 
		<button type="button" onclick="myFunction()">提交</button>
	 
		<p id="demo"></p>
		 
		<script>
		function myFunction() {
		    var x, text;
	 
	    // 获取 id="numb" 的值
		    x = document.getElementById("numb").value;
		 
	    // 如果输入的值 x 不是数字或者小于 1 或者大于 10,则提示错误 Not a Number or less than one or greater than 10
		    if (isNaN(x) || x < 1 || x > 10) {
		        text = "输入错误";
		    } else {
	        text = "输入正确";
		    }
		    document.getElementById("demo").innerHTML = text;
		}
		</script>
		 
		</body>
		</html>

1 required:验证当前元素之是否为空;
2 pattern: 使用正则表达式验证当前元素值是否匹配,不能验证内容是否为null;
3 min和max: 验证当前元素值最大值或最小值, 一般使用与number/range等元素;
4 minlength和maxlength:验证当前元素值的最小长度和最大长度;
5 validity:表单验证HTML5提供一种有效状态, 有效状态通过 validityState对象获取到

	具体例子
<!DOCTYPE html>
		<html>
	    <head>
	        <meta charset="UTF-8">
	        <title>表单简单验证</title>
	    </head>
	    <body>
	       <h2>用户登录</h2>
	        <form name="cform" method="post" action="123.php" onsubmit="return checkForm();">
		            用户账号: <input name="user"><br />
		            用户密码: <input name="pass" type="password"><br />
		            <input type="submit" value="验  证">
		        </form>
		        <script>
		            function checkForm() {
		                var user = cform.user.value;
		                var pass = cform.pass.value;
		                if (user.length < 2) {
		                    alert("用户名不少于2位");
		                    return false;
		                }
		                var str_temp = user.substr(0, 1);
		                if (!((str_temp >= "a" && str_temp <= "w") || (str_temp >= "A" && str_temp <= "W"))) {
		                    alert("用户名第一个字符需为字母!");
		                    return false;
		                }
		                if (pass.length < 6 || pass.length > 15) {
		                    alert("密码长度须在6-15之间!");
		                    return false;
		                }
		                return true;
		            }
		        </script>
		 
	    </body>
		</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值