误人子弟

先做人,再做技术
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

对FORM元素进行脚本编写

Posted on 2010-08-20 11:28  误人子弟  阅读(414)  评论(0编辑  收藏  举报

  关于<form/>元素进行脚本编写

1. 获取表单的引用

Eg1. var oForm = document.getElementByIdx(“form 1”);

Eg2. var oForm = document.forms[0]; //获取第一个form

Eg3. var oForm = document.forms[“form1”]; //根据名称

2. 访问表单字段

Eg1. var oFirstField = oForm.elements[0]; // 获取第一个表单元素

Eg2. var oTextbox1 = oForm.elements[“textbox1”]; //获取名称为textbox1的表单元素

Eg3. var oTextbox1 = oForm.textbox1; //获取名称为textbox1的表单元素

在名称中有空格时,可以使用方括号标记:

var oTextbox1 = oForm[“text box 1”];

说明:也可以用document.getElementByIdx()和表单字段的id来直接获取元素。

3. 表单字段的共性

     disabled特性可用来获取或设置表单控件是否被禁用(被禁用的控件禁止用户输入);

    form特性用来指向字段所在的表单;

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

    focus()可以使表单字段获取焦点;

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

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

注意:隐藏字段只支持form特性。

4. 聚焦于第一个字段

可用如下代码实现:

document.forms[0].elements[0].focus();

但这样做还有点问题,如果表单的某个元素是隐藏字段,这个字段是不支持focus()方法的,这时候会出现JavaScript错误。我们需要的是将焦点放在第一个可见的表单字段上,可参考如下实现:

var FormUtil = new Object;

FormUtil.focusObject = function() {

    if (document.forms.length > 0) {

       for (var i=0; i<document.forms[0].elements.length; i++ ) {

       var oField = document.forms[0].elements[i];

       if (oField.type != “hidden”) {

       oField.focus();

       return;

}

}

}

}

调用举例如下:

<body onload=”FormUtil.focusOnFirst()”>

5. 提交表单

在普通HTML中,必须使用提交按钮或扮演提交按钮角色的图像来提交表单:

<input type=”submit” value=”提交” />

<input type=”image” src=”submit.gif” />

当用户点击其中一个按钮,无需其他编码,就可以提交表单。如果按回车键,并存在这些按钮,浏览器就会认为是点击了按钮。

可以通过action特性中加入警告框来检测表单是否已被提交:

<form method=”post” action=”javascript:alert(‘提交表单’)”>

还可以调用submit()方法提交表单:

Eg1. oForm.submit();

Eg2. <input type=”button” value=”提交” onclick=”document.forms[0].submit()” />

可以使用onsubmit()方法来检查表单输入的合法性:

<form method=”post” action=”javascript:alert(‘提交表单’)” onsubmit=”handleSubmit()”>

6. 仅提交一次

为防止表单多次提交,可使用如下方法:

<input type=”submit” value=”提交”/>替换成:

<input type=” button” value=”提交” onclick=”this.disabled=true;this.form.submit()”/>

说明:不使用提交按钮并用onclick()来禁用它的原因是,按钮其实在表单提交前就已被禁用,这将导致表单不被提交。

7.重置表单

Eg1. <input type=”rest” value=”重置”/>

Eg2. <form method=”post” action=”javascript:alert(‘提交’)” onreset=”alert(‘正在重置’)” />

Eg3. <input type=”button” value=”重置” onclick=”document..forms[0].reset()” />

 

三.             文本框

Eg1. <input type=”text” size=”25” maxLength=”50” value=”阿蜜果” name=”nickName” />

Eg2. <textarea rows=”25” cols=”5”>文本值</textarea>

1.       获取/更改文本框的值

eg1. var oTextbox1 = document.getElementByIdx(“txt1”);

     alert(oTextbox1.value);

     alert(oTextbox1.value.length);

eg2. var oTextbox1 = document.getElementByIdx(“txt1”);

    oTextbox1.value = “hello,阿蜜果”;

2.       选择文本

可使用select()方法,调用该方法前,文本框必须首先获取焦点。参考代码阿如下:

var oTextbox1 = document.getElementByIdx(“txt1”);

oTextbox1.focus();

oTextbox1.select();

3.       文本框事件

    blur——文本框失去焦点时触发;

    focus——文本框获取焦点时触发;

    change——当用户更改内容后文本框失去焦点时发生(如果是通过value特性来更改内容,则不会触发);

    select——当一个或多个字符被选中时发生,无论是手工选中还是用select()方法。

4.       选择文本

Eg1. <input type=”text” onfocus=”this.select()” />

Eg2. <textarea onfocus=”this.select()”></textarea>

5.       自动切换到下一个

当某个文本框只允许接受指定数量的字符串时,常需要自动切换到下一个字段,让我们来看看其实现:

FormUtil.tabForward = fuction(oTextbox) {

    var oForm = oTextbox.form.

    //确保该文本框不是表单的最后一个字段

if (oForm.elements[oForm.elements.length- 1] == oTextbox

&& oTextbox.value.length == oTextbox.getAttribute(“maxLength”)) {

       for (var i=0; i<oForm.elements.length; i++) {

       if (oForm.elements[i] == oTextbox) {

       for (var j=i+1; j<oForm.elements.length; j++) {

       if (oForm.elements[j].type != “hidden”) {

       oForm.elements[j].focus();

       return;

}

}

}

}

}

}

调用举例: