JavaScript学习(7)利用表单获取数据

来源:互联网 发布:网络安全法考试题库 编辑:程序博客网 时间:2024/05/16 04:52

1.HTML表单基础

  <form>元素常用属性:

  method          该属性可以是GET也可以是POST,这是向服务器传送数据的两种方式

  action             是CGI脚本,表单数据在提交时被发送。也可以使用mailto:action把表单结果发给一个电子邮件地址

  enctype          该属性表示向服务器发送数据时,数据使用的编码方式

  accept            表示当文件上传时,列表服务器能正确处理的mime类型

  select             定义组合框或者下拉列表框,里面的值<option>定义 

  textarea         定义多行文本框,其大小尺寸由rows和cols属性来设置

  input               HTML的输入元素,由type属性确定是哪种控件,其主要属性如下


  button             用来产生自定义动作的一般按钮

  submit            提交表单按钮

  reset               重置表单按钮

  hidden             随表单提交的数据,对用户不可见,没有事件处理程序

  text                 单行文本框

  radio               单选文本框   

  checkbox         复选框

  file                  文本上传文本框

  password         密码输入框

  image              图像,与提交按钮功能一样

  完整示例:

 

  
2.在JavaScript中使用form对象  

    name         表单的名称

    encoding    MIME类型,用enctype属性定义

    target        指定用来显示表单结果的窗口

    reset()       将表单所有输入域置为默认值,无返回值

    submit()     指定用来显示表单结果的窗口

  2.1forms对象的属性方法

    action        表单数据要发送到服务器的URL地址

    elements   一个数组,存放表单中可访问的元素

    length        表单中的元素数量,不可修改此属性
    method      表单发送数据的方式,其值为get或post

    name         表单的名称

    encoding    变淡的MINE类型,用enctype定义

    target        指定用来显示表单结果的窗口

    reset()       将表单所有输入域重置为默认值,无返回值

    submit()     提交表单,但不触发onsubmit事件

  2.2获取表单

    通常在document对象属性form[]数组元素中可以找到form对象。form对象总是按照它们在文档中出现的顺序存放的。如果要获取页面文档中的第n个表单,可以使用如下代码:

    var oform =document.form[n-1];

    相应的,document中的form对象还可以通过其表单名字获取,如下:

    var oform = document.form["formName"];

    在DOM中,还可以使用典型的DOM定位元素的getElementByid(),它只要有传入的表单id即可,如下:

    var oform = document.getElementById("form1");

  2.3访问表单字段

    每个表单的字段,如按钮、文本框、列表框或者其他内容,都包含在表单的element集合中,可以使用它们的name属性或是它们在集合中的位置来访问不同的字段。

    var ofirstField = oform.element[0];

    var ofirstField = oform.element["textbox1"]; 

    var ofirstField = oform.textbox1;

    除了隐藏字段外,其他所有字段都包含有相同的属性、方法和事件,如下

    disable   该属性用来获取或者设置表单控件是否被禁用

    form       该属性用来指向字段所在的表单

    blur()      该方法可以使表单字段失去焦点

    focus()    该方法可以使表单字段获取焦点

    当字段失去焦点时,发生blur()事件,执行onblur事件处理函数;当字段获取焦点时,发生focus事件,执行onfocus事件。

3.用表单输入域

  3.1使用单行文本框

    假设form1是单行文本框所在表单的名称;textbox1是单行文本框的名称,获取文本框的输入值可以采取以下方式:

    document.form1.textbox1.value;

    document.forms[i].textbox1.value;

    document.forms[i].element[j].value;

    document.form1.element[j].value;

    text对象常用属性

    defaultValue     字符串,<input>标记中value属性指定的值

    Form                单行文本框所在表单的名称

    Name               单行文本框的名称

    Size                  单行文本框的宽度

    type                  单行文本框的类型

    value                输入域元素的值    

    示例

   

  3.2使用密码框

    密码框与文本框非常相似,不同的是密码框不管用户输入了什么都只显示星号。在下面的示例中,用户在单行文本框中输入用户名,在密码框中输入密码,当密码框失去焦点时,校验密码的有效性。密码正确时在对话框中显示“密码正确,请进”,否则显示“密码错误,请重新输入”。这只是一个演示功能,实际上验证密码往往在服务器上完成。

    示例:

   

 

 

 

  3.3使用多行文本框

    多行文本框也称作文本区域,它对应于HTML的<textarea>标记。与text对象一样,textarea对象也有一组属性、方法和事件。

    form                 多行文本框所在表单的名称

    name                多行文本框的名称

    type                  多行文本框的类型,为textarea

    value                文本区域的取值,为用户输入在该多行文本框中的文字

    cols                   文本区域的宽度,以字符为单位

    rows                 文本区域的行数

    disabled            控制是否允许用户操作该输入域。true-允许,false-不允许

    readonly           指定多行文本框是否为只读。true-只读,false-可以输入和修改文字

  

  3.4使用单选按钮

    通过单选按钮的名称属性区分单选按钮位于哪一个组中,同一组的单选按钮拥有相同的name属性。checked属性指定单选按钮是否被选中。单选按钮的对象是一个数组。单选按钮对应于HTML标记<input type = "radio">,在javascript中对象为radio。radio常用方法和时间与text相同。

   

  3.5使用复选框

    复选框的对象名称为checkbox,可以用<input>标签定义复选框。复选框只有一个方法:click(),它模拟复选框上的单击。它还有一个事件: onClick,只要复选框被单击,就发生该事件。不论复选框是被选中还是取消选中,需要通过检查checked属性来判断复选框的状态。

   

  3.6使用选择列表

    选择列表既可以允许用户从中选择一项,也可以允许用户进行多项选择。<select>标签用于定义文本项目的选择列表。每个<option>标签都定义了一个可能的选项。value属性是返回到程序的名称,<option>之外的文本显示为该选项的文本。<select>标签还有一个可选属性-multiple,它可以指定允许选中多项。浏览器通常把菜单选项的<select>显示为下拉列表,把多项的列表显示为滚动列表。

    form                      选择列表所在表单的名称

    name                     选择列表的名称

    type                       定义<selected>标签默认type值为select-one,可改为select-multiple

    length                   指定列表项的个数

    disable                  指定列表项是否可用

    multiple                指定是否可选择多个列表项

    size                        指定列表框中的显示项数,即列表框的高度,该值为1时为下拉列表

    option[]                 选项数组,每个可选项都在该数组中有一个条目

    selectedIndex       返回当前选项的索引值。在多选项列表中,该值返回第一个被选中项

    index                     数组中的索引值

    blur()                     从单行文本框中移除键盘输入焦点

    focus()                   设置单行文本框键盘输入焦点 

    add(new,old)        将新new插入old之前。如果old为null,则插入尾页

    remove(n)             删除第n个列表项,n值从0算起

    appendChild(option)    直接添加选项在末尾

   

 3.7按钮 

    按钮使用<input>标签,并可以使用一下3种不同的类型之一。

    submit      提交按钮,可把表单字段中的数据发送给CGI脚本

    reset          重置按钮,可把表单字段回复到默认值

    button       通用按钮,可调用脚本函数

4.通过邮件发送表单结果

  不必使用任何javascript可实现发送表单结果的功能,也可以使用javascript来验证输入信息,需要在表单的action属性中使用mailto:动作。

   

5.显示表单数据

   

6.创建自动提示文本框

  自动提示文本框是javascript的一种特殊而非常有用的功能。自动提示文本框在用户输入时会检测输入的前几个字符,然后给出一个可帮助用户输入的单词列表,这样就会给用户带来很多方便。

  要产生自动提示文本,首先要做的就是写一个方法来搜索字符串数组并返回特定字符开头的所有值。 如下所示

   

  该方法中有两个参数,第一个参数为要匹配的文本,第二个参数则是进行匹配的数组。检查匹配文本sText,若该文本为空,则退出该方法;否则,进入for循环。该循环检测数组中的一个字符,判断是否与匹配文本相等,如果arrValues[i].indexOf(sText) == 0,则表示匹配,然后将这个字符串添加到结果数组arrResult中,最后返回匹配值的数组。

  <textarea cols="50" rows="15" name="code" class="javascript:collapse">&lt;mce:script language="javascript"&gt;&lt;!-- var intIndex=0;arrList = new Array(); arrList[intIndex++] = " 1sdfsdf.com"; arrList[intIndex++] = " a11sdafs.net"; arrList[intIndex++] = " b22dsafsdf"; arrList[intIndex++] = " c333asdfsadf"; arrList[intIndex++] = " 4444dsafasdf"; arrList[intIndex++] = " dddsfddsafdsaf"; arrList[intIndex++] = " 121213dsafsdaf"; arrList[intIndex++] = " 43213asdfadsf"; arrList[intIndex++] = " dsa3121dasf3"; arrList[intIndex++] = " a213"; arrList[intIndex++] = " 323313"; arrList[intIndex++] = " 3213"; arrList[intIndex++] = " 32213"; arrList[intIndex++] = " dsfsdddd"; arrList[intIndex++] = " ds11dfsfd"; arrList[intIndex++] = " ffdafd"; arrList[intIndex++] = " afdfd"; arrList[intIndex++] = " afd"; arrList[intIndex++] = " baffad"; arrList[intIndex++] = " 2fda2fd"; arrList[intIndex++] = " dasd"; function smanPromptList(arrList,objInputId){ this.style = "background:#E8F7EB;border: 1px solid #CCCCCC;font-size:14px;cursor: default;" if (arrList.constructor!=Array){alert('smanPromptList初始化失败:第一个参数非数组!');return ;} window.onload =function() { arrList.sort(function(a,b){ if(a.length&gt;b.length)return 1; else if(a.length==b.length)return a.localeCompare(b); else return -1; }) var objouter=document.getElementById("__smanDisp") //显示的DIV对象 var objInput = document.getElementById(objInputId); //文本框对象 var selectedIndex=-1; var intTmp; //循环用的:) if (objInput==null) {alert('smanPromptList初始化失败:没有找到"'+objInputId+'"文本框');return ;} //文本框失去焦点 objInput.onblur=function(){ objouter.style.display='none'; } //文本框按键抬起 objInput.onkeyup=checkKeyCode; //文本框得到焦点 objInput.onfocus=checkAndShow; function checkKeyCode(){ var ie = (document.all)? true:false if (ie){ var keyCode=event.keyCode if (keyCode==40||keyCode==38){ //下上 var isUp=false if(keyCode==40) isUp=true ; chageSelection(isUp) }else if (keyCode==13){//回车 outSelection(selectedIndex); }else{ checkAndShow() } }else{ checkAndShow() } divPosition() } function checkAndShow(){ var strInput = objInput.value if (strInput!=""){ divPosition(); selectedIndex=-1; objouter.innerHTML =""; for (intTmp=0;intTmp&lt;arrList.length;intTmp++){ for(i=0;i&lt;arrList[intTmp].length;i++){ if (arrList[intTmp].substr(i, strInput.length).toUpperCase()==strInput.toUpperCase()){ addOption(arrList[intTmp],strInput); } } } objouter.style.display=''; }else{ objouter.style.display='none'; } function addOption(value,keyw){ var v=value.replace(keyw,"&lt;b&gt;&lt;font color=red&gt;"+keyw+"&lt;/font&gt;&lt;/b&gt;"); objouter.innerHTML +="&lt;div onmouseover=/"this.className='sman_selectedStyle'/" onmouseout=/"this.className=''/" onmousedown=/"document.getElementById('"+objInputId+"').value='" + value + "'/"&gt;" + v + "&lt;/div&gt;" } } function chageSelection(isUp){ if (objouter.style.display=='none'){ objouter.style.display=''; }else{ if (isUp) selectedIndex++ else selectedIndex-- } var maxIndex = objouter.children.length-1; if (selectedIndex&lt;0){selectedIndex=0} if (selectedIndex&gt;maxIndex) {selectedIndex=maxIndex} for (intTmp=0;intTmp&lt;=maxIndex;intTmp++){ if (intTmp==selectedIndex){ objouter.children[intTmp].className="sman_selectedStyle"; }else{ objouter.children[intTmp].className=""; } } } function outSelection(Index){ objInput.value = objouter.children[Index].innerText; objouter.style.display='none'; } function divPosition(){ objouter.style.top =getAbsoluteHeight(objInput)+getAbsoluteTop(objInput); objouter.style.left =getAbsoluteLeft(objInput); objouter.style.width=getAbsoluteWidth(objInput) } } document.write("&lt;div id='__smanDisp' style="position:absolute;display:none;" + this.style + "" mce_style="position:absolute;display:none;" + this.style + "" onbulr&gt; &lt;/div&gt;"); document.write("&lt;mce:style&gt;&lt;!--.sman_selectedStyle{background-Color:#102681;color:#FFFFFF}--&gt;&lt;/mce:style&gt;&lt;style mce_bogus="1"&gt;.sman_selectedStyle{background-Color:#102681;color:#FFFFFF}&lt;/style&gt;"); function getAbsoluteHeight(ob){ return ob.offsetHeight } function getAbsoluteWidth(ob){ return ob.offsetWidth } function getAbsoluteLeft(ob){ var s_el=0;el=ob;while(el){s_el=s_el+el.offsetLeft;el=el.offsetParent;}; return s_el } function getAbsoluteTop(ob){ var s_el=0;el=ob;while(el){s_el=s_el+el.offsetTop ;el=el.offsetParent;}; return s_el } } smanPromptList(arrList,"inputer") // --&gt;&lt;/mce:script&gt; &lt;table&gt;&lt;tr&gt;&lt;td&gt; &lt;input type="text" id="inputer"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</textarea> 





原创粉丝点击