Skip to content

表单

form

在HTML中表单是form元素表示,其有element元素的属性 也有独有的属性方法

  • acceptCharset
  • action
  • elements
  • enctype
  • length
  • method
  • name
  • target
  • reset()
  • submit()

表单元素

共有一些属性

  • disabled Boolean 字段是否被禁用
  • form 只读 指向当前字段所属表单
  • name String 表单字段名称, 用于form[name]获取元素,label元素的 id指向name ( 最好全局唯一)
  • readOnly Boolean 字段是否只读
  • tabIndex Number 当前字段的切换序号(tab)
  • type String 字段的类型 input(text)
  • value String 当前字段提交服务器的值
  • autofocus Boolean 自动获取焦点 (HTML5) IE不支持

共有的一些方法

  • focus() 自动获取焦点 会触发 focus focusin 方法
  • blur() 失去焦点 会触发 blur focusout方法
  • input/textarea的方法
  • select() 选中文本框中的所有文本 会触发select事件
  • setSelectionRange() //设置选中的文本 // IE9+、其他

一些事件

  • focus/blur
  • change input/textarea 获取焦点、失去焦点、value值发生改变 都会触发 select只要用户选择了不同的选项

如何获取表单

  • 1、 id class等
  • 2、document.forms表单数组 然后通过索引或者name获取
javascript

console.log(document.forms['login']) //form元素
console.log(document.forms[0]) //form元素   不建议使用
console.log(document.getElementById("login"))

表单的提交、重置

  • 1、 HTML元素上只要表单中input、button(type = submit) 获得焦点时按回车 或者button.submit点击都会触发 表单的提交事件(刷新页面)
  • 2、 document.getElementById("login").submit() 也可以提交表单 但是不会触发表单的submit事件
javascript

utils.addEvent(document.getElementById("login"),'submit',function(e){
    console.log(e);
    utils.stopDefault(e);   // 阻止表单的默认提交行为
})
javascript

//  表单的重置
//      <button type="reset">表单重置</button>
utils.addEvent(document.getElementById("login"),'reset',function(e){
    console.log('表单重置了');
    console.log(e);
    // utils.stopDefault(e);   // 阻止表单的重置行为    恢复表单默认内容数据
})

表单的elements

保存表单中所有元素的集合

javascript

console.log(document.forms['login'].elements)  // 跟forms一眼 可以通过索引或者元素的name获取元素  只包含 input select button textarea 等
console.log(document.forms['login'].elements['city'])  // select
console.log(document.forms['login'].elements[3])  //  select
var input1 = document.forms['login'].elements['userName'];
console.log(input1.disabled);     //trur
console.log(input1.readonly);     // undefined
console.log(input1.name);         // userName
console.log(input1.form);         // <form>
console.log(input1.type);         // text
console.log(input1.value);        // 默认值
console.log(input1.tabIndex);     // 2
input1.focus();   // 自动获取交单

表单元素使用

1、输入框过滤输入

一般 使用键盘事件 keypress

javascript

utils.addEvent(document.getElementById("filter1"), 'keypress', function(e) {
    var charCode = e.charCode;
    //  FF和safari3.1以前版本会对方向键、退格键、删除键触发keypress事件 charcode > 9 可修复此Bug
    //  为什么 !event.ctrlKey 是因为 需要确保用户可以复制粘贴   需要使用ctrl
    //  不能过滤中文  失败呀........
    console.log(String.fromCharCode(charCode));
    if (!/\d/.test(String.fromCharCode(charCode)) && charCode > 9 && !event.ctrlKey) {
        utils.stopDefault(e);
    }
})

2、延迟 500 秒输入 处理事件

javascript

var last;
utils.addEvent(document.getElementById("filter1"), 'keyup', function(event) {
    last = event.timeStamp;

    setTimeout(function() {
        if (last - event.timeStamp == 0)
        //如果时间差为0(也就是你停止输入0.5s之内都没有其它的keyup事件发生)则做你想要做的事
        {
            //做你要做的事情
            console.log('处理事件了....')
        }
    }, 500)
})

3、操作剪切板(待完成)

4、自动切换焦点(待完成)