在Javascript 中,页面上的每一对<form> 标记都解析为一个对象,即form 对象。

可以通过document.forms 获取以源顺序排列的文档中所有form 对象的集合。

如果一个表单对象定义如下:
<form name="frm1" method="post" action="login.aspx">
获得该表单对象的方法:
  i>  document.forms["frm1"];   // 根据name属性值
 ii>  document.forms[0];        // 根据索引号
iii>  document.frm1;            // 直接根据name值获得对象

form 表单应该注意的属性:

elements:获取以源顺序排列的给定表单中所有控件的集合。但是<input  type="image" > 对象不在此集合内。

var txtName = myform.elements[0];         //获得表单的第一个元素
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 选择器的使用等。

( name 属性和 id 属性应该尽可能地使用相同的或相关的值。)

在客户端,Javascript 对表单及表单元素的操作,更青睐于使用其name 属性。

因为,对于某些特定的表单元素(如:单选按钮等),使用其name 属性更易于获得元素值,也更方便向服务器传送数据!

Javascript 操作form 表单元素,比较少用的属性:

defaultChecked 设置或获取复选框或单选钮的状态。
defaultValue 设置或获取对象的初始内容。
disabled 设置或获取控件的状态。

提交表单

提交表单的示例:

  <form name="frm" method="post" action="javascript:alert('提交成功!');">
     <input type="button" value="提交功能" 
            onclick="document.forms['frm'].submit();">
     <input type="button" value="禁用反复提交" 
            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="姓名" 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="默认值被选中" />

实现了行为与结构的分离。

设置单选按钮

获取选中的单选按钮 & 设置单选按钮被选中

<script language="javascript">
//获取选中项
function getChoice(){
    var oForm = document.forms["myForm1"];
    //radioName是单选按钮的name属性值
    var aChoices = oForm.radioName;
    //遍历整个单选项表
    for(i=0;i<aChoices.length;i++)   
        if(aChoices[i].checked)   
            break; //如果发现了被选中项则退出
    alert("您选中的是:"+aChoices[i].value);
}
//设置选中项
function setChoice(_num){
    var oForm = document.forms["myForm1"];
    //radioName是单选按钮的name属性值
    oForm.radioName[_num].checked = true; //其它选项的checked值会自动设置为false
}
</script>
//调用代码
<input type="button" value="获取选中项" οnclick="getChoice();" />
<input type="button" value="设置第1项被选中" οnclick="setChoice(0);" />

需要保证同一组单选按钮的name 属性值相同即可。

设置复选框

设置复选框的“全选”、“全不选”及“反选”功能

<script language="javascript">
function changeBoxes(_action){
    var myForm = document.forms["myForm1"];
    //myCheckbox 为所有复选框的name属性值
    var oCheckBox = myForm.myCheckbox;
 
    for(var i=0;i<oCheckBox.length;i++)    //遍历每一个选项
        if(_action < 0)//反选
            oCheckBox[i].checked = !oCheckBox[i].checked;
        else 
            //_action为1是则全选,为0时则全不选
            oCheckBox[i].checked = _action;
}
</script>
<form name="myForm1">
<input type="checkbox" name="myCheckbox">aa
<input type="checkbox" name="myCheckbox">bb
<input type="button" value="全选" onclick="changeBoxes(1);" />
<input type="button" value="全不选" onclick="changeBoxes(0);" />
<input type="button" value="反选" onclick="changeBoxes(-1);" />
</form>

设置下拉列表框

下拉列表框的multiple 属性用于设置或获取下拉列表框是否可以选中多个选项

下拉列表框默认只能选中一项,若要设置为可以选中多项,则<select  multiple = "multiple"> 即可。

type 属性:javascript 语言根据type 属性的值获得下拉列表框select 控件的类型。

type 属性的值为:select-multiple 或 select-one (注意:下拉列表框的类型由multiple 属性控制)

i >  查看下拉列表框的选项(单选项 & 多选项)

<script language="javascript">
function getSelectValue(_myselect){
    var oForm = document.forms["myForm1"];
    //根据参数(下拉列表框的name属性值)获得下拉菜单项
    var oSelectBox = oForm.elements[_myselect];
    //判断是单选还是多选
    if(oSelectBox.type == "select-one"){
        var iChoice = oSelectBox.selectedIndex;    //获取选中项
        alert("单选,您选中了" + oSelectBox.options[iChoice].text);
    }
    else{
        var aChoices = new Array();
        //遍历整个下拉菜单
        for(var i=0;i<oSelectBox.options.length;i++)
            if(oSelectBox.options[i].selected)//如果被选中
              //压入到数组中
              aChoices.push(oSelectBox.options[i].text);
        //输出结果
        alert("多选,您选了:" + aChoices.join());
    }
}
</script>
<form method="post" name="myForm1">
<select id="mysel" name="mysel" multiple="multiple" style="height:60px;">
    <option value="a">AA</option>
    <option value="b">BB</option>
    <option value="c">CC</option>
</select>
<input type="button" onclick="getSelectValue('mysel')" value="查看选项" />

ii >  添加下拉列表框的选项

追加新选项到末尾

<script language="javascript">
function AddOption(Box){ //追加选项到末尾
    var oForm = document.forms["myForm1"];
    var oBox = oForm.elements[Box];
    var oOption = new Option("乒乓球","Pingpang");
    oBox.options[oBox.options.length] = oOption;
}
</script>

插入新选项到指定位置

<script language="javascript">
function AddOption(_select,_num){
    var oForm = document.forms["myForm1"];
    var oBox = oForm.elements[_select];
    var oOption = new Option("text值","value值");
    //兼容IE7,先添加选项到最后,再移动
    oBox.options[oBox.options.length] = oOption;
    oBox.insertBefore(oOption,oBox.options[_num]);
}
</script>
<input type="button" value="添加乒乓球" onclick="AddOption('myselect',1);" />

注意:如果直接使用insertBefore( ) 方法插入选项,将会在IE 中出现一个空选项的bug。为了解决IE 的这个bug ,只能使用先追加新选项到末尾,然后再使用insertBefore( ) 方法将其移动到相应的位置。

类似这样:为了跳过浏览器的某些bug 或限制,实现预定目的的小技巧,通常称之为hack 。

iii >  替换某一选项

<script language="javascript">
//替换选项
function ReplaceOption(_select,_num){
    var oForm = document.forms["myForm1"];
    var oBox = oForm.elements[_select];
    var oOption = new Option("text值","value值");
    oBox.options[_num] = oOption; //替换第_num 个选项
}
</script>
<input type="button" value="替换选项" onclick="ReplaceOption('selName',1);" />

通过oBox.options[_num] = oOption 直接将创建的新选项替换掉指定位置的选项。

iv >  删除某一选项

<script language="javascript">
function RemoveOption(_select,_num){
    var oForm = document.forms["myForm1"];
    var oBox = oForm.elements[_select];
    oBox.options[_num] = null;    //删除选项
}
</script>
</head>
<body>
<select id="mysel" name="mysel" multiple="multiple">
......
<input type="button" value="删除选项" onclick="RemoveOption('mysel',1);" />

直接通过oBox.options[_num] = null 删除选项。

作者: XuGang   网名:钢钢
出处: http://xugang.cnblogs.com
声明: 本文版权归作者和博客园共有。转载时必须保留此段声明,且在文章页面明显位置给出原文连接地址!

HTML 中表单form 的相关知识相关推荐

  1. Html 中表单提交的一些知识总结——防止表单自动提交,以及submit和button提交表单的区别...

    转自:http://jackaudrey.blog.163.com/blog/static/1314217882010590041833/ 在页面中有多个input type="text&q ...

  2. 一篇文章浅析Django Form组件相关知识

    击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 灭烛怜光满,披衣觉露滋. 前言 在上 ...

  3. html表单的首要标记是form,关于html中表单form标记的介绍

    表单在Web网页中用以让访问者输入数据,当提交表单时,表单中输入的数据被打包传递给Web服务器端的程序以处理,从而使得Web服务器与用户之间具有交互功能. 首先我们来说说关于表单的工作机制,浏览器将用 ...

  4. HTML 中表格table 的相关知识

    <table>标签中比较少见的属性和子标签: summary 属性:用于概括整个表格的内容.它对于搜索引擎的机器人记录信息十分重要. bordercolor 属性:用来设置表格边框的颜色. ...

  5. ip访问php $_files空,PHP中表单没有问题但$_FILES为空怎么办?

    PHP中表单没有问题,但"$_FILES"为空的解决方法:首先在form中加代码为"enctype="multipart/form-data":然后开 ...

  6. js进阶 12-5 jquery中表单事件如何使用

    js进阶 12-5 jquery中表单事件如何使用 一.总结 一句话总结:表单事件如何使用:可元素添加事件监听,然后监听元素,和javase里面一样. 1.表单获取焦点和失去焦点事件有哪两组? 注意是 ...

  7. html表单中的数据提交后清空,怎么实现小程序中表单提交后自动清空内容

    怎么实现小程序中表单提交后自动清空内容 发布时间:2021-03-09 10:50:51 来源:亿速云 阅读:88 作者:小新 小编给大家分享一下怎么实现小程序中表单提交后自动清空内容,相信大部分人都 ...

  8. html表单代码原理,HTML表单form

    源码下载 窗口HTML结构 账号:密码: 代码解析 最外层父元素form是块元素,form表单的属性action.method.name都是关于http通信功能的属性,不影响表单form块元素的布局和 ...

  9. Django:我是怎么做到使用django动态定义表单(form)的 .

    http://blog.csdn.net/huyoo/article/details/6627967 第一节 数据结构 最近的项目开发,用到了这样的数据结构: 主要是来管理设备的. 下面我列一下它简化 ...

最新文章

  1. Linux扫盲篇:CentOS、Ubuntu、Gento
  2. UrlUtils工具类,Java URL工具类,Java URL链接工具类
  3. Server Too Busy
  4. LeetCode:136. 只出现一次的数字
  5. day47 Pyhton 数据库Mysql 04
  6. cosnπ为什么是离散信号_奥本海姆《信号与系统》(第2版)笔记和课后习题(含考研真题)详解(下册)复习答案考研资料...
  7. 二十五、JAVA多线程(六、线程控制操作)
  8. 一文搞懂DTFT,DFT,FFT
  9. Google map API:查询地理位置和经纬度信息示例
  10. App发送短信验证码实现
  11. 【洛谷】P3369 【模板】普通平衡树
  12. 【网络设备】Cisco路由器密码重置及配置
  13. jQuery实现消息列表循环垂直向上滚动
  14. bilibili视频爬取报错
  15. mbedtls安装的心路历程
  16. 说说开源中国社区的愚人节
  17. Android Studio 开发(二)问题
  18. Qt::Painter 详解
  19. arduino ps2摇杆程序_Arduino技巧之PS2摇杆实验
  20. 终于把PEST分析模型给整明白了!

热门文章

  1. java 内存溢出 内存泄露_java 内存泄露、内存溢出、内存不足
  2. python 重载id函数_Python函数重载实例
  3. 道格拉斯算法 java_道格拉斯-普克算法的java的实现代码如下
  4. python 程序运行插件_如何使Python插件在Pluma中运行?
  5. android java和c混合编程_C/C++在Java项目、Android和Objective-C三大平台下实现混合编程...
  6. Python只需要三十行代码,打造一款简单的人工语音对话
  7. pyqt5 中QSS
  8. SIGIR 2021 | 推荐系统中的多行为建模
  9. 总奖金近9万!视频超分辨率大赛等你来战!
  10. 对抗训练浅谈:意义、方法和思考(附Keras实现)