前端基础笔记

【javascript】表单的基础知识

2017-12-18  本文已影响0人  shanruopeng

表单的基础知识

属性/方法 含义
acceptCharset 服务器能处理的字符集
action 接受请求的URL
elements 表单所有控件的集合
enctype 请求的编码类型
length 表单中控件的数量
method 要发送的HTTP请求类型
name 表单的名称
reset() 将所有表单域重置为默认值
submit() 提交表单
target 用于发送请求或接收响应的窗口名称
//取得<form>元素引用
var form = document.getElementById("form1");

/**通过document.forms 可以取得页面中所有的表单,在这个集合中,可以通过数值索引或
name 值来取得特定的表单**/
var firstForm = document.forms[0]; //取得页面中的第一个表单
var myForm = document.forms["form2"]; //取得页面中名称为"form2"的表单

1、提交表单

<!-- 通用提交按钮 -->
<input type="submit" value="Submit Form">
<!-- 自定义提交按钮 -->
<button type="submit">Submit Form</button>
<!-- 图像按钮 -->
<input type="image" src="graphic.gif">
//事件处理程序,方便后面使用
var EventUtil = {
    addHandler: function(element, type, handler){
        if (element.addEventListener){
            element.addEventListener(type, handler, false);
        } else if (element.attachEvent){
            element.attachEvent("on" + type, handler);
        } else {
            element["on" + type] = handler;
        }
    },
    getEvent: function(event){
        return event ? event : window.event;
    },
    getTarget: function(event){
        return event.target || event.srcElement;
    },
    removeHandler: function(element, type, handler){
        if (element.removeEventListener){
            element.removeEventListener(type, handler, false);
        } else if (element.detachEvent){
            element.detachEvent("on" + type, handler);
        } else {
            element["on" + type] = null;
        }
    }
};
var form = document.getElementById("myForm");
EventUtil.addHandler(form, "submit", function(event){
//取得事件对象
event = EventUtil.getEvent(event);
//阻止默认事件
EventUtil.preventDefault(event);
});
var form = document.getElementById("myForm");
//提交表单
form.submit();
/**提交表单后就禁用提交按钮**/
EventUtil.addHandler(form, "submit", function(event){
event = EventUtil.getEvent(event);
var target = EventUtil.getTarget(event);
//取得提交按钮
var btn = target.elements["submit-btn"];
//禁用它
btn.disabled = true;
});
<!--利用onsubmit事件处理程序取消后续的表单提交操作-->
<form name="form1" method="post" action="#" onsubmit="return checksubmit()">
    <label>
        <input name="myname" type="text" id="id">
    </label>
    <p>
    <label>
        <input type="submit" name="Submit" value="提交">
    </label>
    </p>
</form>

<script language="javascript">
function checksubmit()
{
    if (document.form1.myname.value=="")
    {
        alert("请输入开始数值!");
        document.form1.myname.focus();
        return false;
    } 
    return true; 
}
</script>

2、重置表单

<!-- 通用重置按钮 -->
<input type="reset" value="Reset Form">
<!-- 自定义重置按钮 -->
<button type="reset">Reset Form</button>
var form = document.getElementById("myForm");
EventUtil.addHandler(form, "reset", function(event){
    //取得事件对象
    event = EventUtil.getEvent(event);
    //阻止表单重置
    EventUtil.preventDefault(event);
});
var form = document.getElementById("myForm");
//重置表单
form.reset();

3、表单字段

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

//取得表单中的第一个字段
var field1 = form.elements[0];

//取得名为"textbox1"的字段
var field2 = form.elements["textbox1"];

//取得表单中包含的字段的数量
var fieldCount = form.elements.length;
<form method="post" id="myForm">
    <ul>
        <li><input type="radio" name="color" value="red">Red</li>
        <li><input type="radio" name="color" value="green">Green</li>
        <li><input type="radio" name="color" value="blue">Blue</li>
    </ul>
</form>
var form = document.getElementById("myForm");
var colorFields = form.elements["color"];
alert(colorFields.length); //3
var firstColorField = colorFields[0];
var firstFormField = form.elements[0];
alert(firstColorField === firstFormField); //true

(1)共有的表单字段属性

属性名 含义
disabled 布尔值,表示当前字段是否被禁用
form 指向当前字段所属表单的指针;只读
name 当前字段的名称
readOnly 布尔值,表示当前字段是否只读
tabIndex 表示当前字段的切换序号
type 当前字段的类型
value 当前字段将被提交给服务器的值
var form = document.getElementById("myForm");
var field = form.elements[0];

//修改value 属性
field.value = "Another value";

//检查form 属性的值
alert(field.form === form); //true

//把焦点设置到当前字段
field.focus();

//禁用当前字段
field.disabled = true;

(2)共有的表单字段方法

EventUtil.addHandler(window, "load", function(event){
    document.forms[0].elements[0].focus();
});
<input type="text" autofocus>
EventUtil.addHandler(window,"load",function(event){
    var element = document.forms[0].elements[0];
    if(element.autofocus !== true){
        element.focus();
        console.log("JS focus");
    }
})
document.forms[0].elements[0].blur();

(3)共有的表单字段事件

事件名 含义
blur 当前字段失去焦点时触发
change 对于inputtextarea元素,在它们失去焦点并且value值改变时触发;对于select元素,在其选项改变时触发。
focus 当前字段获得焦点时触发
var textbox = document.forms[0].elements[0];

/**将文本框的背景颜色修改为黄色,以清楚地表明当前字段已经激活。**/
EventUtil.addHandler(textbox, "focus", function(event){
    event = EventUtil.getEvent(event);
    var target = EventUtil.getTarget(event);
    if (target.style.backgroundColor != "red"){
        target.style.backgroundColor = "yellow";
    }
});

/**在发现非数值字符时,将文本框背景颜色修改为红色。**/
EventUtil.addHandler(textbox, "blur", function(event){
    event = EventUtil.getEvent(event);
    var target = EventUtil.getTarget(event);
    if (/[^\d]/.test(target.value)){
        target.style.backgroundColor = "red";
    } else {
        target.style.backgroundColor = "";
    }
});

/**在发现非数值字符时,将文本框背景颜色修改为红色。**/
EventUtil.addHandler(textbox, "change", function(event){
    event = EventUtil.getEvent(event);
    var target = EventUtil.getTarget(event);
    if (/[^\d]/.test(target.value)){
        target.style.backgroundColor = "red";
    } else {
        target.style.backgroundColor = "";
    }
});
好好学习
上一篇 下一篇

猜你喜欢

热点阅读