首页 > 软件开发 > JavaScript >

基于JavaScript表单脚本

来源:互联网 2023-03-16 23:57:19 版权归原作者所有,如有侵权,请联系我们

一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法。 表单域:包含了文本框、密码框、隐藏域、多行文本框、复选框、单选框、下拉选择框和文件上传框等。 表单按钮:包括提交按钮、复位按钮和一般按钮;用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作。1EZ办公区 - 实用经验教程分享!

JavaScript与表单间的关系:JS最初的应用就是用于分担服务器处理表单的责任,打破依赖服务器的局面,尽管目前web和javascript都有了长足的发展,web表单依然没有为许多常见的任务提供现成的解决方案,很多开发人员不仅会在验证表单的时候使用javascript,而且还会用来增强一些标准表单控件的默认行为。1EZ办公区 - 实用经验教程分享!

工具/原料

  • JavaScript

方法/步骤

  • 1

    一 ,表单的基础知识1EZ办公区 - 实用经验教程分享!

    在HTML中,表单由form标签,在javascript中,表单对应HTMLFormElement类型,HTMLFormElement类型继承HTMLElement类型,所有它和其他的Element元素有相同的默认属性,同时它也有自己的属性和方法:1EZ办公区 - 实用经验教程分享!

    acceptCharset:服务器能够处理的字符集;等价于 HTML 中的 accept-charset 特性。1EZ办公区 - 实用经验教程分享!

    action:接受请求的 URL;等价于 HTML 中的 action 特性 。1EZ办公区 - 实用经验教程分享!

    elements:表单中所有控件的集合(HTMLCollection)。1EZ办公区 - 实用经验教程分享!

    enctype:请求的编码类型;等价于 HTML 中的 enctype 特性。1EZ办公区 - 实用经验教程分享!

    length:表单中控件的数量。1EZ办公区 - 实用经验教程分享!

    method:要发送的 HTTP 请求类型,通常是"get"或"post";等价于 HTML 的 method 特性。1EZ办公区 - 实用经验教程分享!

    name:表单的名称;等价于 HTML 的 name 特性。1EZ办公区 - 实用经验教程分享!

    reset():将所有表单域重置为默认值。1EZ办公区 - 实用经验教程分享!

    submit():提交表单。1EZ办公区 - 实用经验教程分享!

    target:用于发送请求和接收响应的窗口名称;等价于 HTML 的 target 特性。1EZ办公区 - 实用经验教程分享!

    要取得form表单元素的方法有: var form=document.getElementById('form1'); //通过id来取得表单元素1EZ办公区 - 实用经验教程分享!

    var firstForm=document.forms[0]; //通过document.forms来取得页面中的所有表单元素,通过索引值'0‘,取得第一个表单元素1EZ办公区 - 实用经验教程分享!

    var form2=document.forms['form2']; //通过document.forms来取得页面中的所有表单元素,通过name值取得特定的表单元素1EZ办公区 - 实用经验教程分享!

    提交表单:1EZ办公区 - 实用经验教程分享!

    基于JavaScript表单脚本1EZ办公区 - 实用经验教程分享!

  • 2

    以这种方式提交表单时,浏览器会在将请求发送给服务器之前触发 submit 事件。这样,有机会验证表单数据,并据以决定是否允许表单提交。阻止这个事件的默认行为就可以取消表单提交1EZ办公区 - 实用经验教程分享!

    在JS中同样可以以编程的方式调用submit()方法来提交表单:1EZ办公区 - 实用经验教程分享!

    基于JavaScript表单脚本1EZ办公区 - 实用经验教程分享!

  • 3

    在重置表单时,所有表单字段都会恢复到页面刚加载完毕时的初始值1EZ办公区 - 实用经验教程分享!

    用JS方法来重置表单:1EZ办公区 - 实用经验教程分享!

    基于JavaScript表单脚本1EZ办公区 - 实用经验教程分享!

  • 4

    表单字段:1EZ办公区 - 实用经验教程分享!

    每个表单都有Element属性,该属性是表单中所有表单元素(字段)的集合。这个集合是一个有序列表,每个表单字段在element集合中出现的顺序,与在标记中出现的先后顺序相同,可以按位置和name值来访问他们。常见的表单字段有input,select,fieldset,要取得表单中的表单字段:1EZ办公区 - 实用经验教程分享!

    基于JavaScript表单脚本1EZ办公区 - 实用经验教程分享!

  • 5

    共有的表单字段属性:1EZ办公区 - 实用经验教程分享!

    disabled:布尔值,表示当前字段是否被禁用。1EZ办公区 - 实用经验教程分享!

    form:指向当前字段所属表单的指针;只读。1EZ办公区 - 实用经验教程分享!

    name:当前字段的名称。1EZ办公区 - 实用经验教程分享!

    readOnly:布尔值,表示当前字段是否只读。1EZ办公区 - 实用经验教程分享!

    tabIndex:表示当前字段的切换(tab)序号。1EZ办公区 - 实用经验教程分享!

    type:当前字段的类型,如"checkbox"、 "radio",等等。1EZ办公区 - 实用经验教程分享!

    value:当前字段将被提交给服务器的值。对文件字段来说,这个属性是只读的,包含着文件在计算机中的路径1EZ办公区 - 实用经验教程分享!

    除了 form 属性之外,可以通过 JavaScript 动态修改其他任何属性。1EZ办公区 - 实用经验教程分享!

    能够动态修改表单字段属性,意味着我们可以在任何时候,以任何方式来动态操作表单。1EZ办公区 - 实用经验教程分享!

    用户可能会重复单击表单的提交按钮。在涉及信用卡消费时,这就是个问题:因为会导致费用翻番。1EZ办公区 - 实用经验教程分享!

    为此,最常见的解决方案,就是在第一次单击后就禁用提交按钮。只要侦听 submit 事件,并在该事件发生时禁用提交按钮即可 :1EZ办公区 - 实用经验教程分享!

    基于JavaScript表单脚本1EZ办公区 - 实用经验教程分享!

  • 6

    除了fieldset>之外,所有表单字段都有 type 属性。对于input>元素,这个值等于 HTML 特性 type 的值。对于其他元素,这个 type 属性的值如下表所列。1EZ办公区 - 实用经验教程分享!

    基于JavaScript表单脚本1EZ办公区 - 实用经验教程分享!

  • 7

    共有的表单字段方法 :1EZ办公区 - 实用经验教程分享!

    每个表单字段都有两个方法: focus()和 blur()。使用 focus()方法,可以将用户的注意力吸引到页面中的某个部位。例如,在页面加载完毕后,将焦点转移到表单中的第一个字段。1EZ办公区 - 实用经验教程分享!

    基于JavaScript表单脚本1EZ办公区 - 实用经验教程分享!

  • 8

    HTML5 为表单字段新增了一个 autofocus 属性。在支持这个属性的浏览器中,只要设置这个属性,不用 JavaScript 就能自动把焦点移动到相应字段。1EZ办公区 - 实用经验教程分享!

    例如:1EZ办公区 - 实用经验教程分享!

    input type="text" autofocus>1EZ办公区 - 实用经验教程分享!

    与 focus()方法相对的是 blur()方法,它的作用是从元素中移走焦点:1EZ办公区 - 实用经验教程分享!

    document.forms[0].elements[0].blur();1EZ办公区 - 实用经验教程分享!

    change事件:对于input>和textarea>元素,在它们失去焦点且 value 值改变时触发;对于1EZ办公区 - 实用经验教程分享!

    select>元素,在其选项改变时触发。1EZ办公区 - 实用经验教程分享!

    二,文本框脚本1EZ办公区 - 实用经验教程分享!

    在 HTML 中,有两种方式来表现文本框:一种是使用input>元素的单行文本框,另一种是使用textarea>的多行文本框。1EZ办公区 - 实用经验教程分享!

    选择文本:1EZ办公区 - 实用经验教程分享!

    在文本框获得焦点时选择其所有文本,这是一种非常常见的做法 ,实现代码如下:1EZ办公区 - 实用经验教程分享!

    基于JavaScript表单脚本1EZ办公区 - 实用经验教程分享!

  • 8本页面未经许可获取自百度经验
  • 9

    取得选择的文本 :1EZ办公区 - 实用经验教程分享!

    虽然通过 select 事件可以知道用户什么时候选择了文本,但仍然不知道用户选择了什么文本。HTML5 通过一些扩展方案解决了这个问题,以便更顺利地取得选择的文本。该规范采取的办法是添加两个属性: selectionStart 和 selectionEnd。1EZ办公区 - 实用经验教程分享!

    基于JavaScript表单脚本1EZ办公区 - 实用经验教程分享!

  • 10

    IE9 、 Firefox、 Safari、 Chrome 和 Opera 都支持这两个属性。 IE8 及之前版本不支持这两个属性,而是提供了另一种方案。 IE8 及更早的版本中有一个 document.selection 对象,其中保存着用户在整个文档范围内选择的文本信息1EZ办公区 - 实用经验教程分享!

    基于JavaScript表单脚本1EZ办公区 - 实用经验教程分享!

  • 11

    过滤输入:1EZ办公区 - 实用经验教程分享!

    经常会要求用户在文本框中输入特定的数据,或者输入特定格式的数据。1EZ办公区 - 实用经验教程分享!

    基于JavaScript表单脚本1EZ办公区 - 实用经验教程分享!

  • 12

    以上代码实现对表单字段中输入的数据的控制,只允许输入数字1EZ办公区 - 实用经验教程分享!

    想要屏蔽哪些非数字的键,而不像屏蔽哪些基本键和按下ctrl键的操作。1EZ办公区 - 实用经验教程分享!

    自动切换焦点:1EZ办公区 - 实用经验教程分享!

    使用 JavaScript 可以从多个方面增强表单字段的易用性。其中,最常见的一种方式就是在用户填写完当前字段时,自动将焦点切换到下一个字段。为增强易用性,同时加快数据输入,可以在前一个文本框中的字符达到最大数量后,自动将焦点切换到下一个文本框。1EZ办公区 - 实用经验教程分享!

    比如对于下面的表单字段而言:1EZ办公区 - 实用经验教程分享!

    基于JavaScript表单脚本1EZ办公区 - 实用经验教程分享!

  • 13

    HTML5约束验证API1EZ办公区 - 实用经验教程分享!

    为了在将表单提交到服务器之前验证数据,HTML5 新增了一些功能。1EZ办公区 - 实用经验教程分享!

    必填字段:required,例子比如:input type="text" name="username" required>1EZ办公区 - 实用经验教程分享!

    type属性:"email"类型要求输入的文本必须符合电子邮件地址的模式,而"url"类型要求输入的文本必须符合 URL 的模式。1EZ办公区 - 实用经验教程分享!

    pattern属性:这个属性的值是一个正则表达式,用于匹配文本框中的值。例子如:input type="text" pattern="d " name="count">1EZ办公区 - 实用经验教程分享!

    禁用验证:通过设置 novalidate 属性,可以告诉表单不进行验证。 例子如:1EZ办公区 - 实用经验教程分享!

    基于JavaScript表单脚本1EZ办公区 - 实用经验教程分享!

  • 14

    三,选择框脚本1EZ办公区 - 实用经验教程分享!

    选择框是通过select>和option>元素创建的。 该类型还提供下列属性和方法:1EZ办公区 - 实用经验教程分享!

    add(newOption, relOption):向控件中插入新option>元素,其位置在相关项(relOption)之前。1EZ办公区 - 实用经验教程分享!

    multiple:布尔值,表示是否允许多项选择;等价于 HTML 中的 multiple 特性。1EZ办公区 - 实用经验教程分享!

    options:控件中所有option>元素的 HTMLCollection。1EZ办公区 - 实用经验教程分享!

    remove(index):移除给定位置的选项。1EZ办公区 - 实用经验教程分享!

    selectedIndex:基于 0 的选中项的索引,如果没有选中项,则值为-1。对于支持多选的控件,只保存选中项中第一项的索引。1EZ办公区 - 实用经验教程分享!

    size:选择框中可见的行数;等价于 HTML 中的 size 特性。1EZ办公区 - 实用经验教程分享!

    选择框的 type 属性不是"select-one",就是"select-multiple",这取决于 HTML 代码中有没有 multiple 特性。选择框的 value 属性由当前选中项决定,相应规则如下。1EZ办公区 - 实用经验教程分享!

    如果没有选中的项,则选择框的 value 属性保存空字符串。1EZ办公区 - 实用经验教程分享!

    如果有一个选中项,而且该项的 value 特性已经在 HTML 中指定,则选择框的 value 属性等于选中项的 value 特性。即使 value 特性的值是空字符串,也同样遵循此条规则。1EZ办公区 - 实用经验教程分享!

    如果有一个选中项,但该项的 value 特性在 HTML 中未指定,则选择框的 value 属性等于该项的文本。1EZ办公区 - 实用经验教程分享!

    如果有多个选中项,则选择框的 value 属性将依据前两条规则取得第一个选中项的值。1EZ办公区 - 实用经验教程分享!

    选择选项:1EZ办公区 - 实用经验教程分享!

    对于只允许选择一项的选择框,访问选中项的最简单方式,就是使用选择框的 selectedIndex 属性。例子如:1EZ办公区 - 实用经验教程分享!

    var selectedOption = selectbox.options[selectbox.selectedIndex];1EZ办公区 - 实用经验教程分享!

    添加选项:1EZ办公区 - 实用经验教程分享!

    可以使用 JavaScript 动态创建选项,并将它们添加到选择框中。1EZ办公区 - 实用经验教程分享!

    第一种方式就是使用如下所示的 DOM 方法:1EZ办公区 - 实用经验教程分享!

    基于JavaScript表单脚本1EZ办公区 - 实用经验教程分享!

  • 15

    移除选项:1EZ办公区 - 实用经验教程分享!

    DOM 的 removeChild()方法,为其传入要移除的选项,如下面的例子所示:1EZ办公区 - 实用经验教程分享!

    selectbox.removeChild(selectbox.options[0]); //移除第一个选项1EZ办公区 - 实用经验教程分享!

    其次,可以使用选择框的 remove()方法 :1EZ办公区 - 实用经验教程分享!

    selectbox.remove(0); //移除第一个选项1EZ办公区 - 实用经验教程分享!

    最后一种方式,就是将相应选项设置为 null:1EZ办公区 - 实用经验教程分享!

    selectbox.options[0] = null; //移除第一个选项1EZ办公区 - 实用经验教程分享!

    要清除选择框中所有的项,需要迭代所有选项并逐个移除它们 :1EZ办公区 - 实用经验教程分享!

    基于JavaScript表单脚本1EZ办公区 - 实用经验教程分享!

  • 16

    这个函数每次只移除选择框中的第一个选项。由于移除第一个选项后,所有后续选项都会自动向上移动一个位置,因此重复移除第一个选项就可以移除所有选项了。1EZ办公区 - 实用经验教程分享!

    移动和重排选项:1EZ办公区 - 实用经验教程分享!

    如果为 appendChild()方法传入一个文档中已有的元素,那么就会先从该元素的父节点中移除它,再把它添加到指定的位置 :1EZ办公区 - 实用经验教程分享!

    基于JavaScript表单脚本1EZ办公区 - 实用经验教程分享!

  • 17

    表单序列化:1EZ办公区 - 实用经验教程分享!

    表单序列化简单说就是将,各表单字段按名值对的形式进行url编码。1EZ办公区 - 实用经验教程分享!

    表单序列化有以下规则:1EZ办公区 - 实用经验教程分享!

    对表单字段的名称和值进行 URL 编码,使用和号(&)分隔。1EZ办公区 - 实用经验教程分享!

    不发送禁用的表单字段。1EZ办公区 - 实用经验教程分享!

    只发送勾选的复选框和单选按钮。1EZ办公区 - 实用经验教程分享!

    不发送 type 为"reset"和"button"的按钮。1EZ办公区 - 实用经验教程分享!

    多选选择框中的每个选中的值单独一个条目。1EZ办公区 - 实用经验教程分享!

    在单击提交按钮提交表单的情况下,也会发送提交按钮;否则,不发送提交按钮。也包括 type为"image"的input>元素。1EZ办公区 - 实用经验教程分享!

    select>元素的值,就是选中的option>元素的 value 特性的值。如果option>元素没有value 特性,则是option>元素的文本值。1EZ办公区 - 实用经验教程分享!

    四,富文本编辑1EZ办公区 - 实用经验教程分享!

    这一技术的本质,就是在页面中嵌入一个包含空 HTML 页面的 iframe。通过设置 designMode 属性,这个空白的 HTML 页可以被编辑,而编辑对象则是该页面body>元素的 HTML 代码。 designMode 属性有两个可能的值: "off"(默认值)和"on"。在设置为"on"时,整个文档都会变得可以编辑(显示插入符号),然后就可以像使用字处理软件一样,通过键盘将文本内容加粗、变成斜体,等等。另一种编辑富文本内容的方式是使用名为 contenteditable 的特殊属性,这个属性也是由 IE 最早实现的。可以把 contenteditable 属性应用给页面中的任何元素,然后用户立即就可以编辑该元素。1EZ办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!1EZ办公区 - 实用经验教程分享!


    标签: JAVASCRIPT

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号