在Javascript 中,页面上的每一对<form> 标记都解析为一个对象,即form 对象。可以通过document.forms 获取以源顺序排列的文档中所有form 对象的集合。
如果一个表单对象定义如下:
<form name="frm1" method="post" action="login.aspx">
获得该表单对象的方法:
i> document.forms"frm1"; // 根据name属性值 ii> document.forms0; // 根据索引号 iii> document.frm1; // 直接根据name值获得对象 |
form 表单应该注意的属性:
elements:获取以源顺序排列的给定表单中所有控件的集合。<input type="image" > 对象不在此集合内。
var txtName = myform.elements0; //获得表单的第一个元素 var txtName = myform.elements"txtName"; //获得name属性值为"txtName"的元素 var txtName = myform.elements.txtName; //获得name属性值为"txtName"的元素 |
enctype:设置或获取表单的多用途网际邮件扩展(MIME) 编码。
这个属性的默认值为:application/x-www-form-urlencoded
如果要上传文件,则应该设置为:multipart/form-data
form 表单中的<label> 标记:
每一个表单元素的文字描述都应该使用<label> 标记!
该标记用于将文字绑定到对应的表单元素上,它的for 属性指定它所要绑定的表单元素id 值。绑定后单击该文字,鼠标将聚焦到对应的文本框中或选中对应的选项。
若安装了某些桌面主题,某些表单元素还会变换颜色来予以提示,这大大提高了用户体验。
示例代码:
<form method="post" name="frm1"> <label for="txt">点我将聚焦到文本框</label> <input type="text" id="txt" name="myname"> <br/> <label for="rdo">点我将选中单选框</label> <input type="radio" id="rdo" name="male"/> <br/> <label for="cbo">点我将选中复选框</label> <input type="checkbox" id="cbo" name="hobby"> </form> |
效果如下:
注意:
i > 每个表单元素应当尽量使用<label>标签来提高用户体验;
ii > 每个表单元素应当分配 name 属性 和 id 属性。
name 属性:用来将数据提交到服务器;
id 属性:用来在客户端做相应的操作;如:<label>标签的绑定、CSS 选择器的使用等。
在客户端,Javascript 对表单及表单元素的操作,更青睐于使用其name 属性。
因为,对于某些特定的表单元素(如:单选按钮等),使用其name 属性更易于获得元素值,也更方便向服务器传送数据!
Javascript 操作form 表单元素,比较少用的属性:
defaultChecked 设置或获取复选框或单选钮的状态。
defaultValue 设置或获取对象的初始内容。
disabled 设置或获取控件的状态。
提交表单
提交表单的示例:
<form name="frm" method="post" action="javascript:alert('提交成功!');"> <input type="button" value=http://www.chinaz.com/Design/Pages/"提交功能" onclick="document.forms'frm'.submit();"> <input type="button" value=http://www.chinaz.com/Design/Pages/"禁用反复提交" onclick="this.disabled=true; this.form.submit();"> </form> |
效果如下:
注意:
i > 如果使用submit( ) 方法来提交表单,则不会触发<form> 表单元素的onsubmit 事件,
这是与用<input type="submit">提交元素不同的地方;
ii > 可以在按钮的提交或点击事件中,使用disabled 属性来禁用用户反复点击提交按钮的行为,
减少服务器的响应负担;
设置文本框
i > 控制文本框的字符个数
<script language="javascript"> function LessThan(_textArea){ //返回文本框字符个数是否符号要求的boolean值 return _textArea.value.length < _textArea.getAttribute("maxlength"); } </script> <label for="name">文本框:</label> <input type="text" name="name" id="name" value=http://www.chinaz.com/Design/Pages/"姓名" maxlength="10"></p> <br> <label for="comments">多行文本框:</label> <textarea name="comments" id="comments" cols="40" rows="4" maxlength="50" onkeypress="return LessThan(this);"></textarea> |
注意:多行文本框<textarea> 中的maxlength 为自定义属性;如果在<textarea> 中输入字符时,换行也算一个字符;
ii > 自动选中文本框
<script language="javascript"> window.onload = function(){ var txtName = document.getElementsByName("myName")0; txtName.onmouseover = function(){ this.focus(); }; txtName.onfocus = function(){ this.select(); }; } </script> <INPUT TYPE="text" NAME="myName" value=http://www.chinaz.com/Design/Pages/"默认值被选中" /> |
遵循了行为与结构分离的原则。
设置单选按钮
获取选中的单选按钮& 设置单选按钮被选中。代码如下:
<script language="javascript"> //获取选中项 function getChoice(){ var oForm = document.forms"myForm1"; //radioName是单选按钮的name属性值 var aChoices = oForm.radioName; //遍历整个单选项表 for(i=0;i<aChoices.length;i++) if(aChoicesi.checked) break; //如果发现了被选中项则退出 alert("您选中的是:"+aChoicesi.value); } //设置选中项 function setChoice(_num){ var oForm = document.forms"myForm1"; //radioName是单选按钮的name属性值 oForm.radioName_num.checked = true; //其它选项的checked值会自动设置为false } </script> //调用代码 <input type="button" value=http://www.chinaz.com/Design/Pages/"获取选中项" onclick="getChoice();" /> <input type="button" value=http://www.chinaz.com/Design/Pages/"设置第1项被选中" onclick="setChoice(0);" /> |
需要保证同一组单选按钮的name 属性值相同即可。