在Javascript中,页面上的每一对
标记都解析为一个对象,即form对象。
可以通过document.forms获取以源顺序排列的文档中所有form对象的集合。
如果一个表单对象定义如下:
view source
print?
1获得该表单对象的方法:
view source
print?
1 document.forms["frm1"]; // 根据name属性值
2 document.forms[0]; // 根据索引号
3 document.frm1; // 直接根据name值获得对象
form 表单应该注意的属性
elements:获取以源顺序排列的给定表单中所有控件的集合。但是对象不在此集合内。
view source
print?
1 var txtName = myform.elements[0]; //获得表单的第一个元素
2 var txtName = myform.elements["txtName"]; //获得name属性值为"txtName"的元素
3 var txtName = myform.elements.txtName; //获得name属性值为"txtName"的元素
enctype:设置或获取表单的多用途网际邮件扩展(MIME)编码。这个属性的默认值为:application/x-www-form-urlencoded,如果要上传文件,则应该设置为:multipart/form-data。
form 表单中的标记
每一个表单元素的文字描述都应该使用标记。
该标记用于将文字绑定到对应的表单元素上,它的for属性指定它所要绑定的表单元素id值。绑定后单击该文字,鼠标将聚焦到对应的文本框中或选中对应的选项。
若安装了某些桌面主题,某些表单元素还会变换颜色来予以提示,这大大提高了用户体验。
示例代码:
view source
print?
0102点我将聚焦到文本框0304
05点我将选中单选框0607
08点我将选中复选框0910
注意:
* 每个表单元素应当尽量使用标签来提高用户体验;
* 每个表单元素应当分配 name 属性和 id 属性。name 属性:用来将数据提交到服务器;id 属性:用来在客户端做相应的操作;如:标签的绑定、CSS 选择器的使用等。 ( name 属性和 id 属性应该尽可能地使用相同的或相关的值。)
在客户端,Javascript对表单及表单元素的操作,更青睐于使用其name属性。因为,对于某些特定的表单元素(如:单选按钮等),使用其name属性更易于获得元素值,也更方便向服务器传送数据!
Javascript操作form表单元素,比较少用的属性:
* defaultChecked 设置或获取复选框或单选钮的状态。
* defaultValue 设置或获取对象的初始内容。
* disabled 设置或获取控件的状态。
提交表单
提交表单的示例:
view source
print?
1234注意:
* 如果使用submit()方法来提交表单,则不会触发
表单元素的onsubmit事件,这是与用提交元素不同的地方;
* 可以在按钮的提交或点击事件中,使用disabled 属性来禁用用户反复点击提交按钮的行为,减少服务器的响应负担;
设置文本框
控制文本框的字符个数:
view source
print?
0102functionLessThan(_textArea){03//返回文本框字符个数是否符号要求的boolean值04return_textArea.value.length<_textarea.getattribute>07文本框:08
09
10多行文本框:11注意:多行文本框中的maxlength为自定义属性;如果在中输入字符时,换行也算一个字符;
鼠标经过时,自动选中文本框:
view source
print?
0102window.οnlοad=function(){03vartxtName=document.getElementsByName("myName")[0];04txtName.οnmοuseοver=function(){05this.focus();06};07txtName.οnfοcus=function(){08this.select();09};10}1112实现了行为与结构的分离。
设置单选按钮
获取选中的单选按钮 & 设置单选按钮被选中:
view source
print?
0102//获取选中项03functiongetChoice(){04varoForm=document.forms["myForm1"];05//radioName是单选按钮的name属性值06varaChoices=oForm.radioName;07//遍历整个单选项表08for(i=0;i20 //调用代码
2122需要保证同一组单选按钮的name属性值相同即可。
设置复选框
设置复选框的“全选”、“全不选”及“反选”功能:
view source
print?
0102functionchangeBoxes(_action){03varmyForm=document.forms["myForm1"];04//myCheckbox 为所有复选框的name属性值05varoCheckBox=myForm.myCheckbox;0607for(vari=0;i1516aa
17bb
18192021
设置下拉列表框
下拉列表框的multiple 属性用于设置或获取下拉列表框是否可以选中多个选项。
下拉列表框默认只能选中一项,若要设置为可以选中多项,则即可。
type 属性:javascript语言根据type属性的值获得下拉列表框select控件的类型。
type 属性的值为:select-multiple 或 select-one(注意:下拉列表框的类型由multiple 属性控制)。
查看下拉列表框的选项(单选项 & 多选项):
view source
print?
0102functiongetSelectValue(_myselect){03varoForm=document.forms["myForm1"];04//根据参数(下拉列表框的name属性值)获得下拉菜单项05varoSelectBox=oForm.elements[_myselect];06//判断是单选还是多选07if(oSelectBox.type=="select-one"){08variChoice=oSelectBox.selectedIndex;//获取选中项09alert("单选,您选中了"+oSelectBox.options[iChoice].text);10}11else{12varaChoices=newArray();13//遍历整个下拉菜单14for(vari=0;i232425AA26BB27CC2829添加下拉列表框的选项
追加新选项到末尾:
view source
print?
12functionAddOption(Box){//追加选项到末尾3varoForm=document.forms["myForm1"];4varoBox=oForm.elements[Box];5varoOption=newOption("乒乓球","Pingpang");6oBox.options[oBox.options.length]=oOption;7}8插入新选项到指定位置:
view source
print?
0102functionAddOption(_select,_num){03varoForm=document.forms["myForm1"];04varoBox=oForm.elements[_select];05varoOption=newOption("text值","value值");06//兼容IE7,先添加选项到最后,再移动07oBox.options[oBox.options.length]=oOption;08oBox.insertBefore(oOption,oBox.options[_num]);09}1011注意:如果直接使用insertBefore()方法插入选项,将会在IE中出现一个空选项的bug。为了解决IE的这个bug,只能使用先追加新选项到末尾,然后再使用insertBefore()方法将其移动到相应的位置。
类似这样:为了跳过浏览器的某些bug或限制,实现预定目的的小技巧,通常称之为hack。
替换某一选项:
view source
print?
0102//替换选项03functionReplaceOption(_select,_num){04varoForm=document.forms["myForm1"];05varoBox=oForm.elements[_select];06varoOption=newOption("text值","value值");07oBox.options[_num]=oOption;//替换第_num 个选项08}0910通过oBox.options[_num] = oOption 直接将创建的新选项替换掉指定位置的选项。
删除某一选项:
view source
print?
0102functionRemoveOption(_select,_num){03varoForm=document.forms["myForm1"];04varoBox=oForm.elements[_select];05oBox.options[_num]=null;//删除选项06}0708091011
12直接通过oBox.options[_num] = null 删除选项。