JavaScript笔记(浏览器下-操作表单以及文件)
来源:互联网 发布:java 网络爬虫demo 编辑:程序博客网 时间:2024/06/18 11:44
1 操作表单
用JavaScript操作表单和操作DOM是类似的,因为表单本身也是DOM树。
HTML表单的输入控件主要有以下几种:
- 单选按钮
- 多选按钮
- 文本框
- 下拉框(
<select>
) - 口令框
- 隐藏文本(
<input type="hidden">
)
1.1 获取值
假如想要获取一个<input>
节点的输入值,首先要取得该节点的引用,然后调用value
属性就可以了:
/*<input type="text" id="name" name="name">*/var name = document.getElementById("name");name.value; //用户输入的值
但有点要注意的是,对于多选或单选按钮,其value
本身就绑定在HTML上,而我们实际要想拿到的是用户的输入值,也就是用户有没选用这按钮,所以这时除了调用value
属性外还需调用checked
属性以确定用户的输入选项,checked
属性是一个布尔值。
/*<input type="radio" value="男" name="sex" id="man">*/var man = getElementById("sex");man.value; //男man.checked;//true or false
1.2 设置值
设置值和获取值类似,对于text
、password
、hidden
以及select
,直接设置value
属性就可以,对于单选框和复选框,要设置checked
。
1.3 提交表单
提交表单的方式基于HTML结构调用哪个事件:
1.3.1 响应<button>
元素的onclick
事件
这种方法就是在HTML表单内的按钮元素创建一个onclick
事件,使得用户再用鼠标点击时,就马上执行提交表单函数,通过表单节点的submit()
方法完成提交。
<script> function formSubmit() { var form = document.getElementById("test-form"); form.submit();}</script><form id="test-form"> <input tpye="text" name="test"> <button type="button" onclick="formSubmit()">提交</button></form>
这样的做法有个不好的地方就是扰乱了浏览器对form的正常提交,浏览器默认点击<button type="submit">
时提交表单,或者用户在最后一个输入框按回车键。
1.3.1 基于<form>
元素的onsubmit
事件
<form>
元素的onsubmit
事件内容是return function()
,执行的函数返回布尔值,true
的话浏览器继续提交表单,false
就停止提交表单。
<script> function formSubmit() { /* 这里可以对表单信息检验,作出修改 */ return true;}</script><form id="test-form" onsubmit="return formSubmit()"> <input tpye="text" name="test"> <button type="submit">提交</button><!-- type="submit" --></form>
这里说一下type=hidden
的用处,这是一个隐形表单,用户是看不到的。它有一个用法就是,平常输入口令密码时,都会先将口令转化为MD5才提交表单,那么如果此时的口令框会突然从几个*
变成32个*
(因为MD5有32个字符),此时就可以使用hidden
<script> function formSubmit() { //取得口令 var ipwd=document.getElementById("input-password"); var md5ipwd=document.getElementById("md5-password"); //将口令变成MD5后赋值该hidden md5ipwd.value=toMD5(ipwd.value);}</script><form id="test-form" onsubmit="return formSubmit()"> <input tpye="password" id="input-password"> <input tpye="hidden" id="md5-password" name="password"> <button type="submit">提交</button></form>
注:此处用的最重要两个知识是
hidden
用户是无法看到的但还是能对它进行编辑并提交,第二个就是<input>
没有name
属性是不会被提交的。
2 操作文件
在HTML表单中,可以上传文件的唯一控件就是<input type="file">
。
注意:当一个表单包含
<input type="file">
时,表单的enctype
必须指定为multipart/form-data
,method
必须指定为post
,浏览器才能正确编码并以multipart/form-data
格式发送表单的数据。
用JavaScript对<input type="file">
的value
赋值是没有任何效果的,此时的value
值是文件名,所以JavaScript可以在提交表单时对文件扩展名做检查,以便防止用户上传无效格式的文件。
2.1 File API
HTML5的File API提供了File
和FileReader
两个主要对象,可以获得文件信息并读取文件。
<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width" /> <title>文件api</title> <style>#test-image-preview { width:500px; height:500px; border:1px solid #ff0000;} </style> <script src="fileapi.js"></script> </head> <body> <div id="test-file-info"></div> <div id="test-image-preview"></div> <form action=""><input id="test-image-file" type="file"></form> <script> 'use strict'; var fileInput = document.getElementById('file'), info = document.getElementById('info'), preview = document.getElementById('image-preview'); // 监听 type="file" 的change事件 fileInput.addEventListener('change', function () { // 清除背景图片 preview.style.backgroundImage = ''; // 检查文件是否选择 if(!fileInput.value) { info.innerHTML = '<span style="color:red;">没有选择图片</span>'; return false; } // 获取file引用,这里是files[0] var file = fileInput.files[0]; console.log(file); info.innerHTML = '文件: ' + file.name + '<br>' + '大小: ' + file.size + '<br>' + '修改: ' + file.lastModifiedDate; // 判断图片格式 if(file.type!=='image/jpeg' && file.type !== 'image/png' && file.type !== 'image/gif') { var p = document.createElement('p'); p.innerHTML = '<span style="color:red;">不是有效的图片文件!</span>'; info.appendChild(p); return false; } // 展示图片,创建FileReader对象 var reader = new FileReader(); //事先设置一个回调函数 reader.onload = function (e) { var data = e.target.result;// data:image/jpeg;base64, preview.style.backgroundImage = 'url("'+data+'")'; } // 以DataURL的形式读取文件 reader.readAsDataURL(file); });</script> </body></html>
- JavaScript笔记(浏览器下-操作表单以及文件)
- (三)JavaScript关于浏览器--操作表单
- JavaScript笔记(浏览器上--操作DOM)
- (四)JavaScript关于浏览器--操作文件
- JavaScript学习笔记二十五:操作表单
- JavaScript(十)操作表单
- JavaScript笔记之操作浏览器窗口
- Linux学习笔记:linux下的文件以及对文件的简单操作
- Javascript学习笔记之操作系统以及浏览器验证篇
- 使用JavaScript操作表单
- 使用JavaScript操作表单
- 使用JavaScript操作表单
- javascript基础。表单操作
- javascript之表单操作
- javascript之表单操作
- javascript操作表单
- JavaScript中的表单操作
- javascript基础。表单操作
- Android学习(三)Button和imageButton
- jsp中的basePath和path (绝对路径 相对路径)
- JAVA中this的三种用法的详解
- 从c语言快速过渡到java语言(java语言与c语言语法区别概述)
- 删除一个无头单链表的非尾节点+从尾到头打印单链表
- JavaScript笔记(浏览器下-操作表单以及文件)
- 用Sqoop从从MySQL导入数据到Hive和HBase
- Hadoop Yarn调度器的选择和使用
- js面向对象选项卡(this的使用)
- 开发语言大PK:php和Java哪个更好?
- burpsuite学习——手机抓包
- 大数据-ubuntu16.04上Hadoop安装教程_单机配置
- JAVA---------集合(二)
- 新路程------hi35516a kernel导入spi flash