一、获取表单元素
通过 form.name 可以获取到相对应的表单元素。
<form action="#" method="post" id="form">
<p>用户名: <input type="text" name="username" /></p>
<p>密码:<input type="password" name="userpass" /></p>
<p>性别:<input type="radio" name="usergender" checked value="男" />男
<input type="radio" name="usergender" value="女" />女
</p>
<p>爱好:
<input type="checkbox" name="userhobby" value="吃饭">吃饭
<input type="checkbox" name="userhobby" value="睡觉">睡觉
<input type="checkbox" name="userhobby" value="写代码">写代码
</p>
<p>
简介:
<textarea name="userinfo"></textarea>
</p>
<p>
<button type="button">注册</button>
</p>
</form>
<script>
//1、通过ID获取表单元素
var form = document.getElementById("form");
//2、获取按钮完成点击动作
var btn = document.getElementsByTagName("button")[0];
//3、根据form.表单元素的name名称获取到具体元素
var username = form.username;
var userpass = form.userpass;
var usergender = form.usergender;
var userhobby = form.userhobby;
var userinfo = form.userinfo;
console.log(username, userpass, usergender, userhobby, userinfo);
btn.onclick = function () {
//4、点击之后获取每一个表单元素的值
console.log(username.value) //用户名:admin
console.log(userpass.value) //密码:123456
console.log(usergender.value) //性别:男
var str = ""
for (var i = 0; i < userhobby.length; i++) {
if (userhobby[i].checked) {
str += userhobby[i].value + ','
}
}
str = str.substring(0, str.length - 1);//爱好 比较特殊 选中的全部获取
console.log(str) //吃饭,写代码
console.log(userinfo.value) //简介 1234
}
</script>
二、表单事件
- 提交事件(form.onsubmit)
form.onsubmit 事件在表单提交时触发,触发事件调用的函数中默认 return true,表示允许表单提交,
return false 阻止表单提交。
<body>
<form action="#" method="post" id="form1">
<p>用户名: <input type="text" name="username"/></p>
<p>
<!--button按钮中type属性有三个值:submit(默认)、reset、button-->
<button>注册</button>
</p>
</form>
<script>
//1、通过ID获取表单元素
var form = document.getElementById("form1");
//2、通过form.onsubmit事件来触发表单提交
form.onsubmit = function(){
//3、通过form.name名称来获取对应的值,如果为空则不允许提交表单
var username = form.username.value;
if(username==""){
//4、判断表单元素中是否值为空
alert('用户名为空');
//5、阻止表单提交,也可以理解为阻止表单提交的默认行为(普通事件写法的阻止事件默认行为)
return false;
}
}
</script>
</body>
- 重置事件
form.onreset 事件在表单重置时调用,return true 表示允许重置,return false 表示阻止表单重置。
<body>
<form action="#" method="post" id="form1">
<p>用户名: <input type="text" name="username"/></p>
<p>
<button>注册</button>
<button type="reset">重置</button>
</p>
</form>
<script>
//1、通过ID获取表单元素
var form = document.getElementById("form1");
//2、通过form.onreset事件来触发表单重置
form.onreset = function(){
//给出提交框向用户询问
var isTrue = confirm("是否需要重置表单?");
if(isTrue){
//如果点击的是确定按钮就重置表单
return isTrue;
}else{
//如果点击的试取消按钮就阻止表单重置
return false;
}
}
</script>
</body>
- 获取焦点(onfocus)、失去焦点(onblur)
onfocus 事件:当表单元素获得焦点时调用,即光标进入到了输入框
onblur事件:当表单元素失去焦点时调用,即光标离开了输入框
事件名称 | 语法结构 |
onfocus | 表单元素.onfocus = function(){} |
onblur | 表单元素.οnblur= function(){} |
举例:得到焦点给 文本框设置背景,失去则清除背景
<form action="#" method="post" id="form">
<p>用户名: <input type="text" name="username" /></p>
<p>
<button>注册</button>
<button type="reset">重置</button>
</p>
</form>
<script>
var form = document.getElementById('form');
//给文本框设置聚焦和失焦
//先获取文本框
var input = form.username;
//设置聚焦事件
//元素.onfocus = function(){}
input.onfocus = function () {
this.style.background = "pink";
}
//元素.onblur = function(){}
input.onblur = function () {
this.style.background = "";
}
</script>
- 内容只要发生变化时触发的事件(实时监控)
事件名 | 语法结构 | 兼容浏览器 |
oninput | 表单元素.oninput = function(){} | 标准浏览器+IE9以上 |
onpropertychange | 表单元素.onpropertychange = function(){} | ie8以及以下浏览器 |
举例:密码文本框的输入密码的强度
<form action="#" method="post" id="form">
<p>用户名: <input type="text" name="username" /></p>
<p>密码:<input type="password" name="userpass" />
<span></span>
</p>
<p>
<button>注册</button>
<button type="reset">重置</button>
</p>
</form>
<script>
var form = document.getElementById('form');
var span = document.getElementsByTagName("span")[0];
form.userpass.oninput = inputchange;
form.userpass.onpropertychange = inputchange;
function inputchange() {
if (this.value.length >= 12) {
span.innerHTML = "强";
} else if (this.value.length >= 9) {
span.innerHTML = "中";
} else if (this.value.length >= 6) {
span.innerHTML = "弱";
} else {
span.innerHTML = "";
}
}
</script>
- 失去焦点时内容发生变化所触发的事件
语法结构:表单元素.onchange = function(){}
<form action="#" method="post" id="form">
<p>用户名: <input type="text" name="username" /></p>
<p>
<button>注册</button>
<button type="reset">重置</button>
</p>
</form>
<script>
var form = document.getElementById('form');
form.username.onchange = function () {
console.log(this.value);
}
</script>
三、表单方法(发生情况在按钮上)
- 提交(submit)和重置(reset)
举例:普通按钮实现提交重置表单的效果
- 提交:表单.submit()
<form action="#" method="post" id="form">
<p>用户名: <input type="text" name="username" /></p>
<p>
<button type="button">注册</button>
</p>
</form>
<script>
//1、通过ID获取表单元素
var form = document.getElementById("form");
//2、获取按钮完成点击动作
var btn = document.getElementsByTagName("button")[0];
//3、按钮点击事件
btn.onclick = function () {
var username = form.username.value;
if (username != "") {
//4、获取表单文本框的值,如果不为空则进行提交
form.submit();
} else {
alert('用户名不能为空')
}
}
</script>
- 重置:表单.reset()
<form action="#" method="post" id="form">
<p>用户名: <input type="text" name="username" /></p>
<p>
<button>重置</button>
</p>
</form>
<script>
//1、通过ID获取表单元素
var form = document.getElementById("form");
//2、获取按钮完成点击动作
var btn = document.getElementsByTagName("button")[0];
//3、按钮点击事件
btn.onclick = function () {
var isTrue = confirm("是否需要重置表单?");
if (isTrue) {
//如果点击的是确定按钮就重置表单
form.reset();
} else {
//如果点击的试取消按钮就阻止表单重置
return false;
}
}
</script>
- 获取焦点(focus())、失去焦点( blur() )
<form action="#" method="post" id="form">
<p>用户名: <input type="text" name="username" /></p>
</p>
</form>
<script>
//1、通过ID获取表单元素
var form = document.getElementById("form");
var btn = document.getElementById('btn');
//2、通过form.name名称获取表单
form.username.focus();
// form.username.blur();
</script>
四、localStorage(本地存储)
用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去删除,localStorage 属性是只读的。
存值:localStorage.key = value
取值:localStorage.key
【示例代码:】
localStorage.username = "admin";
localStorage.userpass = "123456";
console.log(localStorage)
console.log(localStorage.username)
案例:登录模拟数据存储到localStorage中,并比较结果,登录成功与否
涉及知识点:
i.JSON.stringify(javascript值) 方法用于将 JavaScript 值转换为 JSON 字符串。
ii.JSON.parse(JSON字符串) 方法用于将一个 JSON 字符串转换为对象。
<body>
<form action="http://www.offcn.com" id="form">
用户名:<input type="text" name="username"><br/>
密码:<input type="password" name="userpass"/><br/>
<button>登录</button>
</form>
<script>
var form = document.getElementById("form");
var btn = document.getElementsByTagName("button")[0];
var username = form1.username;
var userpass = form1.userpass;
form.onsubmit = function(){
//还可以一次性存储多个值
var obj = [{"username":"admin","userpass":"123456"},{"username":"张三","userpass":"123456"}]
//JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。
var value = JSON.stringify(obj); //[{"username":"admin","userpass":"123456"},{"username":"张三","userpass":"123456"}]
localStorage.arr = value;
//JSON.parse() 方法用于将一个 JSON 字符串转换为对象。
var data = JSON.parse(localStorage.arr);
//console.log(data); //[{…}, {…}]
var tag = true; //创建一个比对的假设条件
for(var i = 0 ; i < data.length;i++){
if(data[i].username != username.value && data[i].userpass != userpass.value){
tag = false;
break;
}
}
if(tag==true){
alert('用户登录成功');
form.submit();
return true;
}else{
alert('用户登录失败');
return false;
}
}
</script>
</body>