`

深入解析form标签

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

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

如果一个表单对象定义如下:

<form name="frm1" method="post" action="login.aspx"> 


获得该表单对象的方法:

document.forms["frm1"];   // 根据name属性值  
document.forms[0];        // 根据索引号  
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>


注意:

每个表单元素应当尽量使用<label>标签来提高用户体验;
每个表单元素应当分配 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>


注意:

如果使用submit()方法来提交表单,则不会触发<form>表单元素的onsubmit事件,这是与用<input type="submit">提交元素不同的地方;
可以在按钮的提交或点击事件中,使用disabled 属性来禁用用户反复点击提交按钮的行为,减少服务器的响应负担;
设置文本框
控制文本框的字符个数:

<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>中输入字符时,换行也算一个字符;

鼠标经过时,自动选中文本框:

<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="获取选中项" onclick="getChoice();" />
<input type="button" value="设置第1项被选中" onclick="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 属性控制)。

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

<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="查看选项" />


添加下拉列表框的选项

追加新选项到末尾:

<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。

替换某一选项:

<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 直接将创建的新选项替换掉指定位置的选项。

删除某一选项:

<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 删除选项。
分享到:
评论

相关推荐

    深入解析HTML语言

    深入解析HTML语言,首先要理解其基本概念和结构。 1. HTML元素与标签:HTML由一系列的元素组成,每个元素都是由起始标签和结束标签(如`&lt;p&gt;`和`&lt;/p&gt;`代表段落)构成,或者为自闭合标签(如`&lt;img&gt;`)。这些标签定义...

    SpringMVC表单标签进行数据绑定(图书管理)Demo

    首先,Spring MVC中的表单标签是基于JSP标准标签库(JSTL)的,特别是`&lt;form:form&gt;`和`&lt;form:input&gt;`等标签,这些标签增强了对数据绑定的支持。通过使用这些标签,我们可以简化视图层与控制器之间的交互。 1. **...

    深入解析STRUTS架构设计与实现

    ### 深入解析Struts架构设计与实现 #### Struts框架概述 Struts是一个开源的Web应用框架,它遵循MVC(Model-View-Controller)设计模式,主要用于Java EE平台上的开发。Struts框架的核心组件是ActionServlet,它...

    DHTML 手册--------HTML,JAVASCRIPT深入解析

    《DHTML手册——HTML, JAVASCRIPT深入解析》是一本专门为Web开发者量身打造的指南,涵盖了HTML和JavaScript这两个核心Web技术的深度解析。HTML(HyperText Markup Language)是网页内容的基础,而JavaScript则是赋予...

    struts2常用标签详解

    本文将深入解析Struts2中的常用标签,这些标签在实际开发中非常实用,对于初学者理解并掌握Struts2的运行机制至关重要。 首先,我们需要了解Struts2标签库的主要组成部分,它们分为Action、Display、Logic、Field和...

    struts2 标签 tags API 参考文档

    Display标签主要用于显示数据,例如 `&lt;s:property&gt;` 标签用于输出值栈上的对象属性,而 `&lt;s:label&gt;` 标签则常用于生成表单标签的标签文本。 4. **Form标签** Form标签 (`&lt;s:form&gt;`) 是创建表单的核心,它能够自动...

    [Java.Web培训视频]_001.HTML常见标签深入详解

    9. 表单标签:`&lt;form&gt;`定义表单,`&lt;input&gt;`用于输入数据,有多种类型如文本、密码、提交按钮等,`&lt;label&gt;`绑定输入框,提高可访问性,`&lt;textarea&gt;`用于多行文本输入。 10. 分割线标签:`&lt;hr&gt;`绘制水平分割线,用于...

    struts2.0标签使用源码

    2. 在JSP页面中,使用`&lt;s:form&gt;`标签创建表单,使用`s:textfield`、`s:textarea`等标签绑定Action的属性。 3. 使用`s:submit`标签提交表单,Struts2会自动将表单数据封装到Action中。 4. 在Action的execute方法中...

    Struts1-标签

    在深入探讨Struts 1标签的具体知识点之前,首先要理解Struts 1框架本身。Struts 1是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。它通过一系列的组件,把应用的业务逻辑从Web层中分离出来,便于...

    Struts2标签详解及具体实例解析

    10. **表单标签 `&lt;s:form&gt;`**: - 创建一个 Struts2 表单,可以绑定到 Action,并支持各种验证和提交操作。 11. **日期和时间标签 `&lt;s:date&gt;`、`&lt;s:datetimepicker&gt;`**: - `&lt;s:date&gt;` 格式化日期输出,`...

    自定义标签,标签实例,ppt

    本篇文章将深入探讨自定义标签的概念、工作原理以及如何创建和使用它们。 一、自定义标签概述 自定义标签可以看作是HTML标签的扩展,但它们提供了更丰富的功能和灵活性。通过自定义标签,开发者可以创建具有特定...

    python3开发进阶-Django框架的Form表单系统和基本操作.docx

    以下是对Form组件的深入解析: 1. **HTML表单的生成** Django Form组件能够自动生成HTML表单元素。例如,当你定义了一个包含`username`和`pwd`字段的LoginForm类,Django会自动创建相应的`&lt;input&gt;`标签,这些标签...

    带标签的TextView

    这种设计在各种应用程序中很常见,例如表单、设置页面或提示信息。 `TextViewWithLabel` 是一个自定义视图,可能是一个自定义类,继承自`TextView`,并添加了额外的功能来显示标签。`CDATA` 在XML中是CDATA段...

    掌握自定义jsp标签s

    本文将深入探讨如何掌握自定义JSP标签,以及其在实际开发中的应用。 一、JSP自定义标签概述 1. JSP自定义标签的作用:自定义标签提供了一种封装业务逻辑和视图的方式,使得代码结构更加清晰,降低了HTML和Java代码...

    Structs2 标签库详解

    - `form`标签:用于创建表单,可以自动绑定模型字段,并处理表单提交。例如,`&lt;s:form action="saveUser" method="post"&gt;` 创建一个提交到"saveUser"动作的POST表单。 - `list`标签:用于遍历集合数据并渲染,常...

    C# winfrom 自定义表单设计器

    本文将深入探讨如何使用C#来构建一个自定义的WinForm表单设计器。这个设计器允许开发者以可视化的方式创建和编辑表单,提供XML保存和加载表单布局的功能,以及一系列的设计时操作,如拖放、属性设置、复制/粘贴、...

    Struts2标签库详解

    了解和掌握Struts2标签库是提升开发效率的关键,本文将深入解析Struts2的标签库及其用法。 一、Struts2核心标签库 1. `&lt;s:property&gt;`:这个标签用于显示或设置对象的属性值。例如,`...

    Go-Form实现使用Go结构轻松创建HTML表单

    在这里,我们使用了`form`标签注解,它包含了关于HTML表单元素的属性,如`label`(标签文本)、`type`(控件类型)和`placeholder`(占位符)。这些注解使得Go结构体能够直接转换为HTML代码。 接下来,我们需要导入...

    struts2标签库详解

    本文将深入解析Struts2标签库,帮助读者理解并掌握其用法。 1. **简介** Struts2的标签库基于JavaServer Pages (JSP) 标准标签库(JSTL)扩展而来,提供了丰富的标签用于处理表单、数据展示、控制流程等任务。这些...

Global site tag (gtag.js) - Google Analytics