1、操作BOM对象
- BOM(Browser Object Model)的核心对象是window,它表示浏览器的一个实例。
- window对象有双重角色,它既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象。这意味着在网页中定义的任何一个对象、变量和函数,都以 window作为其Global对象,因此有权访问parseInt()等方法。
- 如果页面中包含框架,则每个框架都拥有自己的 window对象,并且保存在frames集合中。在frames集合中,可以通过数值索引(从0开始,从左至右,从上到下) 或者框架的名称来访问相应的window对象。
说明:下面测试大多是在浏览器控制台
1.1、window对象
window.innerHeight // 获取浏览器内部高度
170
window.outerHeight // 获取浏览器外部总高度
680
window.innerWidth // 获取浏览器内部宽度
1280
window.outerWidth // 获取浏览器外部总宽度
1280
window.open('https://www.baidu.com','_blank') // 打开一个窗口:url 打开的地方
window.close() // 关闭浏览器
小示例:
/*
(1)消息框:alert, 常用。
alert() 方法用于显示带有一条指定消息和一个 OK 按钮的警告框。
(2)输入框:prompt,返回提示框中的值。
prompt() 方法用于显示可提示用户进行输入的对话框。
参数(可选):
第一个参数:要在对话框中显示的纯文本。
第二个参数:默认的输入文本。
(3)确认框:confirm,返回 true/false.
confirm() 方法用于显示一个带有指定消息和 OK 及取消按钮的对话框。
*/
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style type="text/css">
#aa{
border: 1px solid red;
height: 100px;
}
</style>
<body>
<div id="aa">
This is a div
</div>
<button onclick="testAlert();">警告</button>
<button onclick="testConfirm();">修改</button>
<button onclick="testPrompt();">输入</button>
<script type="text/javascript">
// 1.警告框
function testAlert(){
alert('警告框!!!');
}
/*
2.输入框
返回值:输入的内容
**/
function testPrompt(){
var item = prompt('请输入年龄'); // item得到输入的值
// console.log(item)
// alert(prompt('请输入年龄',18)); // 将输入的值输出
}
/*
3.确认框
返回值:boolean(true|false)
**/
function testConfirm(){
var result = confirm('真的要改吗?');
if(result){
var ele = document.getElementById("aa");
ele.style.color="red";
ele.innerHTML="<span>fdsfsd</span>";
}else{
alert("没事别瞎点。。。");
}
}
</script>
</body>
</html>
1.2、navigator
navigator封装了浏览器信息
navigator.appName
"Netscape"
navigator.appVersion
"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36 Edg/91.0.864.48"
navigator.userAgent
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36 Edg/91.0.864.48"
navigator.platform
"Win32"
- 大多数时候,我们不会使用navigator对象,因为会被人为修改!
- 不建议使用这些属性来判断和编写代码
1.3、screen
// 获取屏幕宽高 单位px
screen.width
1280
screen.height
720
1.4、location
// location的一些重要属性和方法
host: "www.baidu.com" // 主机
href: "https://www.baidu.com/" // 当前指向的位置
protocol: "https:" // 协议
reload: ƒ reload() // 重新加载页面
// 设置新的地址
location.assign('https://www.cnblogs.com/javaconner/')
示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<script type="text/javascript">
function openBaidu(){
// 没有历史记录,用新的文档替换当前文档
// window.location.replace("http://www.baidu.com");
// console.log(window.location.href); // 获取完整的url
window.location.href = "http://www.baidu.com";
}
</script>
<body>
<input type="text" value="" />
<input type="button" value="刷新" onclick="window.location.reload();" />
<input type="button" value="百度" onclick="openBaidu();" />
</body>
</html>
1.5、document
document 代表当前页面,HTML DOM文档树
修改页面标题
document.title
"百度一下,你就知道"
document.title = 'conner'
"conner"
获取具体的文档树节点
<dl id="dl">
<dt>Java</dt>
<dd>JavaSE</dd>
<dd>JavaEE</dd>
</dl>
<script>
let dl = document.getElementById('dl');
</script>
获取cokkie
document.cookie
"....."
1.6、history
history 代表浏览器的历史记录
history.back() // 回退
history.forward() // 前进
2、操作DOM对象
- DOM(Document Object Model)文档对象模型 要实现页面的动态交互效果,BOM操作远远不够,需要操作 html 才是核心。
- 如何操作 htm,就是 DOM。简单的说,DOM提供了用程序动态控制 html 接口。DOM即文档对象模型描绘了一个层次化的节点树,运行开发 人员添加、移除和修改页面的某一部分。DOM处于javascript 的核心地位上。
- 每个载入浏览器的HTML文档都会成为Document 对象。Document 对象使我们可以从脚本中对 HTML 页面 中的所有元素进行访问。
- Document 对象是Window 对象的一部分,可通过 window.document 属性对其进行访问。
2.1、节点
加载 HTML 页面时,Web 浏览器生成一个树型结构,用来表示页面内部结构。DOM 将这种树型结构理解为由节点组成,组成一个节点树。对于页面中的元素,可以解析成以下几种类型的节点:
节点类型 | HTML内容 |
---|---|
文档节点 | 文档本身 |
元素节点 | 所有的HTML元素 |
属性节点 | HTML元素内的属性 |
文本节点 | 元素内的文本 |
注释节点 | HTML中的注释 |
2.2、操作元素的节点
- 当HTML文档在被解析为一颗DOM树以后,里面的每一个节点都可以看做是一个一个的对象,我们称为DOM对象
- 查找到某一个或者一类节点对象,可以创建某种节点对象,可以在某个位置添加节点对象,甚至可以动态地删除节点对象,这些操作可以使我们的页面看起来有动态的效果,后期结合事件使用,就能让我们的页面在特定时机、特定的事件下执行特定的变换。
获取节点
在进行增、删、改的操作时,都需要指定到一个位置,或者找到一个目标,此时我们就可以通过Document对 象提供的方法,查找、定位某个对象(也就是我们说的节点)。
注意:操作 DOM 必须等节点初始化完毕后,才能执行。
两种处理方式:
(1)把 script 调用标签移到html末尾即可;
(2)使用onload事件来处理JS,等待html 加载完毕再加载 onload 事件里的 JS
window.onload = function () { // 等加载html后执行};
获取方式如下:返回的集合都可以通过索引(以 0 为起始位置)来访问。
方法 | 描述 |
---|---|
getElementById() | 根据id获取dom对象,如果id重复,那么以第一个为准 |
getElementsByTagName() | 根据标签名获取dom对象集合 |
getElementsByClassName() | 根据样式名获取dom对象数集合 |
getElementsByName() | 根据name属性值获取dom对象集合,常用于多选获取值 |
parentElement | 获取元素的父元素 |
children | 获取元素的所有的子元素集合 |
示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p id="p1" class="para">这是一个段落<span>文本</span></p>
<p id="p1" class="para">这又是一个段落</p>
<input type="text" name="txt"/>
<input type="checkbox" name="hobby" value="游泳"/>游泳
<input type="checkbox" name="hobby" value="篮球"/>篮球
<input type="checkbox" name="hobby" value="足球"/>足球
<hr/>
<a href="javascript:void(0)" onclick="testById()">按照id获取</a>
<a href="javascript:void(0)" onclick="testByName()">按照name获取</a>
<a href="javascript:void(0)" onclick="testByTagName()">按照标签名获取</a>
<a href="javascript:void(0);" onclick="testByClass();">按照class获取</a>
</body>
<script type="text/javascript">
// 按照id获取元素
function testById() {
// 返回单个对象
var p = document.getElementById("p1");
console.log(p);
// 表示获取元素开始标签和结束标签之间的html结构
console.log(p.innerHTML);
console.log(p.innerText); // 表示获取标签之间的普通文本
}
// 按照name获取元素
function testByName() {
// 对象集合
var ho = document.getElementsByName("hobby");
console.log(ho);
for (var i = 0; i <= ho.length - 1; i++) {
console.log(ho[i].value);
}
}
// 按照标签名获取元素
function testByTagName() {
// 对象集合
var inputArr = document.getElementsByTagName("input");
for (var i = 0; i < inputArr.length; i++) {
if (inputArr[i].type === "text") {
console.log("text类型");
} else if (inputArr[i].type === "checkbox") {
if (inputArr[i].checked) {
console.log(inputArr[i].value);
}
}
}
}
// 按照class属性获取元素
function testByClass() {
// 对象集合
var ps = document.getElementsByClassName("para");
console.log(ps[0].innerHTML);
ps[0].innerHTML += "这是一段新的文本";
}
</script>
</html>
说明:href="javascript:void(0)":伪协议,表示不执行跳转,而执行指定的点击事件。
创建节点和插入节点
很多时候我们想要在某个位置插入一个新的节点,此时我们首先需要有一个节点存在,可以通过以下几种方式 创建新节点。
创建节点
方法 | 描述 |
---|---|
createElement() | 创建一个新的节点,需要传入节点的标签名称,返回创建的元素对象 |
createTextNode() | 创建一个文本节点,可以传入文本内容 |
innerHTML | 可以插入超文本 |
innerText | 可以插入文本 |
注意:后边两种适用于选中元素的内容为空时,因为有内容的话会覆盖,而前两种是追加元素,不会对原来内容造成影响
插入节点
方法 | 描述 |
---|---|
write() | 将任意的字符串插入到文档中 |
appendChild() | 向元素中添加新的子节点,作为最后一个子节点 |
insertBefore() | 向指定的已有的节点之前插入新的节点newItem:要插入的节点exsitingItem:参考节点需要参考父节点 |
示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button onclick="addPara();">添加段落</button>
<button onclick="addImg();">添加图片</button>
<button onclick="addTxt();">添加文本框</button>
<button onclick="addOptions()">添加选项</button>
<select name="music">
<option value="-1">你心内的一首歌</option>
<option value="0">南山南</option>
<option value="1">喜欢你</option>
</select>
<hr />
<div id = "container"></div>
</body>
<script type="text/javascript">
// 添加p节点
function addPara(){
// 获取容器
var container =document.getElementById("container");
// 创建段落<p></p>
var p =document.createElement('p');
// 第一种方式
// 创建文本节点
var txt=document.createTextNode("以后的你会感谢现在努力的你");
// 将txt节点追加到p节点中
p.appendChild(txt);
// 将p节点追加到container节点中
container.appendChild(p);
/*
// 第二种方式
// 向p节点中添加内容
p.innerHTML = "以后的你会感谢现在努力的你";
// 将p节点追加到container节点中
container.appendChild(p);
*/
/*
// 第三种方式
// 将字符串类型的p标签内容添加到container中,不会添加多次
var str = "<p>以后的你会感谢现在努力的你</p>";
container.innerHTML = str;
*/
}
// 添加图片
function addImg(){
// 创建图片
var img = document.createElement("img") ;
/*
// 设置属性第一种方式
// 设置img标签的src属性
// img.src ="http://www.baidu.com/img/bd_logo1.png";
*/
// 设置属性第二种方式
// setAttribute() 方法添加指定的属性,并为其赋指定的值。
// 设置img的src属性
img.setAttribute('src','http://www.baidu.com/img/bd_logo1.png');
img.style.width = '300px';
img.style.height = '200px';
// 获取容器
var container =document.getElementById("container");
// 将img节点追加到container中。
container.appendChild(img);
}
// 添加文本框
function addTxt(){
// 创建文本框
var txt =document.createElement("input");
/*
// 设置类型第一种方式
txt.type = "text";
txt.value = "添加成功";
*/
// 设置类型第二种方式
txt.setAttribute('type', 'text');
txt.setAttribute('value', '添加成功');
/*
* txt.type = 'password'
* txt.value = '123'
*/
// 获取容器
var container =document.getElementById("container");
// 将txt节点追加到container中。
container.appendChild(txt);
}
// 添加下拉框的选项
function addOptions(){
// 第一种方式
/*
// 创建下拉项
var option = document.createElement("option") ;
option.value = "2" ;
option.text = "油菜花" ;
// 获取下拉框
var sel = document.getElementsByTagName("select")[0];
// 添加 下拉项
sel.appendChild(option);
*/
// 第二种方式:
// var option = document.createElement("option") ;
// option.value = "2" ;
// option.text = "不该" ;
// 获取下拉框
// var sel = document.getElementsByTagName("select")[0];
// 添加下拉项
// sel.options.add(option);
// 第三种方式: 添加下拉项
var sel = document.getElementsByTagName("select")[0];
sel.innerHTML += "<option value = '2'>英雄</option>" ;
}
</script>
</html>
删除节点
删除多个节点的时候,children是在时刻变化的,删除节点的时候一定要注意!
方法 | 描述 |
---|---|
removeChild() | 从元素中移除子节点 |
示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<script type="text/javascript">
function delNode(){
var programmer =document.getElementById("programmer");
// 从父元素中删除节点,获取要删除对象的父元素,然后从父元素中删除该对象
programmer.parentNode.removeChild(programmer);
}
</script>
<body>
<span id="programmer">程序猿</span>
<a href="javascript:void(0)" onclick="delNode();">删除</a>
</body>
</html>
3、操作表单
表单是我们页面向后台传输数据的一种非常常见的方式,在进行数据发送(请求发出)之前,我们应该现在页面进行 一系列数据合法性的验证,节省不必要的错误数据的传输,以及提高用户的体验度。
3.1、获取表单
前两种常用
1、document.表单名称
2、document.getElementById(表单id);
3、document.forms[表单名称]
4、document.forms[索引]; //从 0 开始
示例:
<body>
<form id='myForm' name="myForm" action="" method="post"></form>
<form id='myForm2' name="myForm2" action="" method="post"></form>
</body>
<script>
//四种方式
var form =document.getElementById("myForm");
form =document.myForm;
form =document.forms["myForm"];
form =document.forms[0];
console.log(form);
</script>
3.2、获取表单元素
获取input元素
如 text password hidden textarea等,前两种常用。
1)、通过 id 获取:document.getElementById(元素 id);
2)、通过 form.名称形式获取: myForm.元素名称; name属性值
3)、通过 name 获取 :document.getElementsByName(name属性值)[索引] // 从0开始
4)、通过 tagName 数组 :document.getElementsByTagName('input')[索引] // 从0开始
<body>
<form id='myForm' name="myForm" action="" method="get">
姓名:<input type="text" id="uName" name="uName" value="zs"/><br />
密码:<input type="password" id="uPwd" name="uPwd" value="1234"/><br />
<input type="hidden" id="uno" name="uno" value="隐藏域" />
个人说明:<textarea name="intro"></textarea>
<button type="button" onclick="getTxt();" >获取元素内容</button>
</form>
</body>
<script>
function getTxt(){
var uno = document.getElementById("uno");
var uName = myForm.uName;
console.log(uName + "--------");
var uPwd = document.getElementsByTagName('input')[1] ;
var intro = document.getElementsByName("intro")[0];
console.log(uno.value +","+ uName.value +","+ uPwd.value +","+ intro.value);
}
</script>
获取单选按钮
前提:将一组单选按钮设置相同的name属性值
1)获取单选按钮组:
document.getElementsByName("name属性值");
(2)遍历每个单选按钮,并查看单选按钮元素的checked属性
- 若属性值为true表示被选中,否则未被选中
- 选中状态设定: checked='checked' 或 checked='true' 或 checked
- 未选中状态设定: 没有checked属性或 checked='false
<body>
<form action="" name="myForm">
<input type="text" name="inputName" value="aaa" />
<input type="radio" name="rad" value="1" /> 1
<input type="radio" name="rad" value="2" /> 2
<button type="button" onclick="getTxt();" >获取元素内容</button>
</form>
</body>
<script type="text/javascript">
function getTxt() {
var radios = document.getElementsByName('rad');
//radios[0].checked = 'checked'
for(var i = 0; i<radios.length; i++){
console.log(radios[i].checked + '---' + radios[i].value)
}
}
</script>
获取多选按钮
操作方式与单选同理,不同之处在于可以多选
<body>
<form action="" method="post">
<input type="checkbox" name="test" value="1">1
<input type="checkbox" name="test" value="2">2
<input type="checkbox" name="test" value="3">3
<button type="button" onclick="getTxt();" >获取元素内容</button>
</form>
</body>
<script>
function getTxt() {
var test = document.getElementsByName("test");
var txt = "";
for (var i = 0;i < test.length; i++){
if(test[i].checked){
txt += test[i].value+",";
}
}
txt = txt.substr(0,txt.length-1);
console.log(txt);
}
</script>
获取下拉框选项
-
获取 select 对象:
-
var uFrom = document.getElementById("uFrom");
-
-
获取选中项的索引:
-
var idx = uFrom.selectedIndex;
-
-
获取选中项 options 的 value属性值:
-
var val = uFrom.options[idx].value; /* 注意:当通过options获取选中项的value属性值时, 若没有value属性,则取option标签的内容 若存在value属性,则取value属性的值 */
-
-
获取选中项 options 的 text:
-
var txt = uFrom.options[idx].text;
-
选中状态设定:selected='selected'、selected=true、selected
未选中状态设定:不设selected属性
<body onload="init()">
<form id='myForm' name="myForm" action="#" method="post">
来自:
<select id="uFrom" name="uFrom">
<option value="-1" >请选择</option>
<option value="0">北京</option>
<option value="1">上海</option>
<option value="2">广东</option>
</select><br />
<button type="button" id="sub" name="sub">提交</button>
</form>
</body>
<script>
function init () {
var sub = document.getElementById("sub");
sub.onclick = function () {
//获取select对象
var uFrom = document.getElementById("uFrom");
console.log("表单对象:" + uFrom);
//获取选中的索引
var idx = uFrom.selectedIndex;
console.log("选中项的索引值:" + idx);
//获取选中项的value值
var val = uFrom.options[idx].value;
console.log("选中项的value属性值:" + val);
//获取选中项的text
var txt = uFrom.options[idx].text;
console.log("选中项的text:" + txt);
}
}
</script>
3.3、提交表单
-
使用普通button按钮+onclick事件+事件中编写代码:
- 获取表单.submit();
-
使用submit按钮 + onclick="return 函数()" +函数编写代码:
- 最后必须返回:return true|false;
-
使用submit按钮/图片提交按钮 + 表单onsubmit="return 函数();" +函数编写代码:
- 最后必须返回:return true|false;
<body>
<form id='myForm1' name="myForm2" action="#" method="get" onsubmit="return onSub();">
<input name="test" id="uName"/><span id="msg"></span><br />
<!--通过js事件:sub()提交表单-->
<input type="button" onclick="sub();" value="提交表单1" />
<input type="submit" onclick="return sub2();" value="提交表单2" />
<input type="submit" value="提交onSubmit" /><br />
<input type="image" src="img/u=71331624,2965806045&fm=23&gp=0.jpg"
width="60px" height="40px" />
</form>
</body>
<script type="text/javascript">
// input的type=button,调用submit()方法提交
function sub(){
document.myForm2.submit();
}
// 进行校验,返回值为true才能提交
function sub2(){
var uName = document.getElementById("uName");
var val = uName.value;
if(val.length>0){
return true; // 提交
}
document.getElementById("msg").innerHTML = "不能空着啊!!!";
document.getElementById("msg").style.color="red";
return false; // 不提交
}
// onsubmit事件提交
function onSub () {
var uName = document.getElementById("uName");
var val = uName.value;
if(val.length>0){
return true; // 提交
}
document.getElementById("msg").innerHTML = "填写点儿东西呗!(ˉ▽ ̄~) 切~~";
document.getElementById("msg").style.color="red";
return false; // 不提交
}
</script>
3.4、表单验证
<body>
<form id='myForm' name="myForm">
姓名:<input type="text" id="uName" name="uName" /><br />
密码:<input type="password" id="uPwd" name="uPwd" /><br />
年龄:<input type="radio" name="uAge" value="0" checked="checked"/>小屁孩
<input type="radio" name="uAge" value="1"/>你懂得 <br />
爱好:<input type="checkbox" name="uFav" value="篮球"/>篮球
<input type="checkbox" name="uFav" value="爬床"/>爬床
<input type="checkbox" name="uFav" value="代码"/>代码<br />
来自:<select id="uFrom" name="uFrom">
<option value="-1" selected="selected">请选择</option>
<option value="0">北京</option>
<option value="1">上海</option>
</select><br />
<div id="validate" style="color: red;"></div>
<button type="submit" onclick="return checkForm();">提交</button>
<button type="reset" onclick="resetForm();">重置</button>
</form>
</body>
<script>
/**
要求:
1、验证用户名
1)不能为空
2)长度为 6-12 位
2、验证密码
1)不能为空 *
2)长度为 6-12 位
3)不能包含用户名
3、年龄: 必须选择 你懂得
4、爱好: 必须选择一项
5、来自: 必须选择一项
满足以上条件
1、弹出所有的内容
2、提交表单
否则
1、说明错误原因
2、不能提交表单
*/
// 通过id属性值得到dom对象
function $(id) {
return document.getElementById(id);
}
// 重置表单所有元素 注意函数不能命名为 clear reset 等
function resetForm(){
// 获取说明 div
var validate =$('validate');
validate.innerHTML ="";
}
// 表单校验
function checkForm () {
var flag = true;
// 获取说明 div
var validate = $('validate');
validate.innerHTML = "";
// 1、验证用户名
// 1)、获取用户名的值
var uName = $('uName').value;
// 1)不能为空 -->后期正则处理
// 2)长度为 6-12 位
if ("" === uName || uName.length === 0) {
validate.innerHTML += "*用户名不能为空</br>";
flag = false;
} else if (uName.length < 6 || uName.length > 12) {
validate.innerHTML += "*用户名长度在 6-12 位</br>";
flag = false;
}
// 2、验证密码
var uPwd = $('uPwd').value;
// 1)不能为空
// 2)长度为 6-12 位
// 3)不能包含用户名
if ("" === uPwd || uPwd.length === 0) {
validate.innerHTML += "*密码不能为空</br>";
flag = false;
} else if (uPwd.length < 6 || uPwd.length > 12) {
validate.innerHTML += "*密码长度在 6-12 位</br>";
flag = false;
} else if (uName.length > 0 && uPwd.indexOf(uName) >= 0) {
validate.innerHTML += "*密码中不能出现用户名</br>";
flag = false;
}
// 3、年龄: 必须选择 你懂得
var ageGroup = document.getElementsByName("uage");
var age;
for (var i = 0; i < ageGroup.length; i++) {
if (ageGroup[i].checked) {
age = ageGroup[i].value;
}
}
if (age === 0) {
flag = false;
validate.innerHTML += "*小屁孩,妈妈喊你回家</br>";
}
// 4、爱好: 必须选择一项
var uFav = document.getElementsByName("uFav");
var favStr = "";
for (i = 0; i < uFav.length; i++) {
if (uFav[i].checked) {
favStr += uFav[i].value + ",";
}
}
favStr = favStr.substr(0, favStr.length - 1);
if (favStr.length < 1) {
flag = false;
validate.innerHTML += "*人生真无趣</br>";
}
// 5、来自
var uFrom = $('uFrom');
var idx = uFrom.selectedIndex;
var val = uFrom.options[idx].value;
var valTxt = uFrom.options[idx].text;
if (-1 === val) {
flag = false;
validate.innerHTML += "*你来自火星吗?</br>";
}
// 满足以上条件 弹出内容
if (flag) {
var str = "";
str += "您的姓名是:" + uName + "\n";
str += "您的密码是:" + uPwd + "\n";
str += "您的年龄是:" + "可以赢取白富美了" + "\n";
str += "您的爱好是:" + favStr + "\n";
str += "您来自于:" + valTxt + "\n";
alert(str);
// 设置表单提交的地址
myForm.action = "http://www.baidu.com";
// 提交表单
myForm.submit();
return false;
} else {
return false;
}
}
</script>
3.5、md5 加密密码,表单优化
<body>
<form id="uForm" action="#" method="post">
<p>用户名:<input type="text" name="uName"></p>
<p>密码:<input type="password" id="pwd"></p>
<input type="hidden" id="md5pwd" name="uPwd">
<input type="button" onclick="md5Encipher()" value="提交">
</form>
</body>
<!-- MD5工具 -->
<script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js"></script>
<script>
function md5Encipher() {
var uForm = document.getElementById('uForm');
var pwd = document.getElementById('pwd');
var md5pwd = document.getElementById('md5pwd');
md5pwd.value = md5(pwd.value);
uForm.submit();
}
</script>
效果: