javascript权威指南第14章 表单脚本示例代码

 HTML部分

<!DOCTYPE html>
<html>

<head>
    <title></title>
   
</head>

<body>
    <form name="form1" id="form1" >
        <div>
            <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>
            <ul>
                <li>
                    <!-- type='select-one' -->
                    <select name="selectbox" id='selectbox'>
                        <options>
                            <option value="1">one</option>
                            <option value="2">two</option>
                            <option value="3">three</option>
                        </options>
                    </select>
                </li>
            </ul>
            <ul>
                <li>
                    <!-- type='multiple' -->
                    <select multiple id="selectbox2">
                        <option value="1">one</option>
                        <option value="2">two</option>
                        <option value="3">three</option>
                    </select>
                </li>
            </ul>
            <input type="text" pattern="\d+" size='25' maxlength="50" value="initial value" name="textbox1">
            <textarea cols="5" rows="5">initial value</textarea>
            <input type="time">
            <input type="email" />
            <input type="url" />
            <input type="number" />
            <input type="submit" value="Submit Form" name="submit-btn" />
            <input type="reset" value="reset Form" />
            <!-- <button type="button" value="OK">OK</button>
                    <button type="submit" value="OK">Submit Form</button> -->
        </div>
        <div contenteditable id="richedit"  style="height: 300px;"></div>
        <iframe name="richedit" style="height: 100px;" src="blank.htm"></iframe>
    </form>

    <script type="text/javascript" src="form.js" ></script>
</body>

</html>

Form.js

//在HTML中,表单是由<form>元素来表示的,在javascript中,表单对应的是HTMLFormElement 继承自HTMLElement
//HTMLElement有下列独有的属性和方法。
//acceptCharset 服务器能够处理的字符集,等价于HTML中accept-Charset特性
//action 接收请求的URL,等价于HTML中的action特性
//elements 表单中所有控件的集合(HTMLCollection).
//enctype  请求编码类型,等价于HTML中的enctype特性
//length 表单中的控件数量
//method 要发送HTPP请求类型,通常是GET或POST,等价于HTML中的method特性
//name  表单的名称,等价于HTML的name特性
//submit 提交表单
//target 用于发送请求或者接收响应的窗口名称,等价于HTML的target特性
// document.getElementById("form1") document.forms - document.forms[0]  document.forms["form1"]

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

form.addEventListener('submit', function (event) {

    //避免表单多次提交
    var btn = (event ? event : window.event).target.elements['submit-btn'];
    btn.disabled = true;

    //验证等操作
    var colorFields = form.elements['color'];
    alert(colorFields.length);
    var firstColorFiled = colorFields[0];
    var firstFormFiled = form.elements[0];
    alert(firstColorFiled == firstFormFiled);

    if (event.preventDefault) {
        event.preventDefault();
    }
    else {
        event.returnValue = false;
    }

}, false);

form.addEventListener('reset', function (event) {
    if (event.preventDefault()) {
        event.preventDefault();
    }
    else {
        event.returnValue = false;
    }
}, false);

//form.submit(); 提交表单 form.reset(); 重置表单


//14.1.3 表单字段
var colorFields = form.elements['color'];
// alert(colorFields.length);
var firstColorFiled = colorFields[0];
var firstFormFiled = form.elements[0];
//alert(firstColorFiled == firstFormFiled);

//表单字段共有属性
//disabled boolean 当前字段是否被禁用
//form 只想当前字段所属表单的指针,只读
//name  当前字段的名称
//readOnly boolean 表示改字段是否是只读
//tabIndex 表是当前字段的切换tab 序号
//type 当前字段的类型,如 checkbox radio 等
//value 当前字段将提交给服务器的值

var field = form.elements[0];

field.value = 'Another value';
field.focus();
field.disabled = true;
field.type = 'checkbox';
// alert(form.form ==form);


//14.2.1 选择文本
var textbox = document.forms[0].elements['textbox1'];
// textbox.select();
// textbox.addEventListener('focus',function(event){
//     (event?event:window.event).target.select();
// },false);

//选择事件
// textbox.addEventListener('select',function(event){
//     //alert('Text selected:'+textbox.value);
//     //取得选择的文本
//     alert(textbox.value.substring(textbox.selectionStart,textbox.selectionEnd));
// },false);

//选择部分文本
textbox.value = 'Hello world!';
textbox.focus(); //获得焦点才生效
//textbox.setSelectionRange(0,textbox.value.length);
textbox.setSelectionRange(0, 3); //谷歌浏览器支持
// textbox.setSelectionRange(4,7);

//选择所有文本 IE浏览器支持
// var range = textbox.createTextRange();
// range.collapse(true);
// range.moveStart('character',0);
// range.moveEnd('character',textbox.value.length);
// range.select();


//14.2.2 过滤输入

textbox.addEventListener('keypress', function (event) {

    //var target = event?event.target:window.event.target;
    var charCode = null;
    if (typeof event.charCode == 'number') {
        charCode = event.charCode;
    } else {
        charCode = event.keyCode;
    }
    //非数字阻止继续冒泡执行
    if (!/\d/.test(String.fromCharCode(charCode)) && charCode > 9 && !event.ctrlKey) {
        (event ? event : window.event).preventDefault();
    }

}, false);

//阻止复制的内容不合规
textbox.addEventListener('paste', function (event) {
    var text = (event.clipboardData || window.ClipboardData).getData('text');
    if(!/^\d*$/.test(text)){
        (event?event:window.event).preventDefault();
    }
}, false);


//14.2.4 HTML5约束验证API

//<input type='text' name='username' required /> 必填字段

var isRequiredSupported = 'required' in document.createElement('input'); //检验浏览器是否支持required属性

//检验字段有效性
if(document.forms[0].checkValidity()){
    //表单有效
}

form.noValidate =true;//禁用验证


// 14.3 选择框脚本

//select 方法
//add(newOption,relOption) 向控件插入新元素,其位置在相关项relOption
//multiple 布尔值 表示是否允许多选项选择
//options 控件中所有<option>元素的HTLCollection
//remove(index) 移除指定位置的项
//selectedIndex 基于0的选中项的索引,如果没有选中项 则值为-1. 对于多选的控件,只保持选中项的第一项索引
//size 选择框中可见的行数


//DOM中每个option的元素都有一个HTMLOptionElement 对象表示,有如下属性
//index 当前选项在options集合中的索引
//label 当前选择项的标签
//selected 布尔值,表示当前项是否被选中
//text 选项的文本
//value 选项的值


//14.3.1 选择选项
var selectbox = document.getElementById("selectbox");
var selectedOption = selectbox.options[selectbox.selectedIndex];
selectbox.options[1].selected =true;

//14.3.2 添加选项
var newOption = document.createElement('option');
newOption.appendChild(document.createTextNode('Option Text'));
newOption.setAttribute('value','Option value');
selectbox.appendChild(newOption);

//14.3.3 移除选项
// selectbox.removeChild(selectbox.options[0]);
//  selectbox.remove(0);
 selectbox.options[0] =null;

 //14.3.4 移动和重排选项
 var selectbox2 = document.getElementById('selectbox2');
 selectbox2.appendChild(selectbox.options[0]); //selectbox.option[0] 添加到第二select的时候会从第一个select 移除

 var optionToMove = selectbox.options[1];
 selectbox.insertBefore(optionToMove,selectbox.options[optionToMove.index-1]);


 //14.4 表单序列化


 //14.5 富文本编辑

frames['richedit'].document.designMode ='on';
frames["richedit"].document.execCommand('bold',false,null);
frames['richedit'].document.execCommand('italic',false,null);
frames['richedit'].document.execCommand('createlink',false,'http://www.wrox.com');
frames['richedit'].document.execCommand('formateblock',false,'<h1>');

  

猜你喜欢

转载自www.cnblogs.com/ms_senda/p/11488725.html