<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表单事件</title>
</head>
<body>
<!--
1. 表单值的获取: name属性
2. onchange()事件,当值发生改变时触发, 不同的控件,触发时间时机不同
2.1: text/textarea , 在输入完成失去焦点时,内容有更新就会触发
-->
<h3>登录</h3>
<form action="" id="login">
<p>
<label for="username"></label>用户名:</label>
<!-- 对于表单,其实还有一个比id更重要的属性:name -->
<!-- name是用于将前端数据提交到服务器时的数据标识符 -->
<!-- 所以访问,再方便的方式是name,并不是id -->
<input type="text" id="username" name="username" value="admin">
</p>
<!-- 单选按钮 -->
<p>
<input type="radio" name="gender" value="male" id="male" checked><label for="male">男</label>
<input type="radio" name="gender" value="female" id="female"><label for="female">女</label>
</p>
<!-- 复选框 -->
<p>
<input type="checkbox" name="hoppy[]" value="game" id="game" checked><label for="game">打游戏</label>
<input type="checkbox" name="hoppy[]" value="book" id="book"><label for="book">读书</label>
</p>
<!-- 下拉框 -->
<p>
<select name="area" value="与option中的selected一致">
<!-- 默认选中第一项 -->
<option value="shushan">蜀山区</option>
<option value="luyang">庐阳区</option>
<option value="baohe" selected>包河区</option>
</select>
</p>
</form>
<script>
var login = document.getElementById('login');
console.log(login.username.value); // 'admin'
//删除id属性,会发现仍然可以取到值,说明我们不是根据id取值,而是根据name来取值
// 为每个控件取一个id比较麻烦,也不是每个控件都会有id,但是每个控制必定会有一个name属性
// 所以,用name属性来选择表单控件元素是非常棒的解决方案,document有专门的方法
// onchange事件
// 获取文本框变化的内容
login.username.onchange = function () {
// 失去焦点,并且内容发生变化才会触发,没有变化不会发生,2条件缺一不同
console.log(login.username.value);
}
// 获取单选按钮变化
// 按常规思维,这样得到任何数据的
login.gender.onchange = function () {
console.log(login.gender.value);
}
// 因为gender是一组数组,返回是一个集合,不是一个单值
console.log(login.gender);
console.log(login.gender.length);
console.log(login.gender[0].value);
console.log(login.gender[1].value);
// 我们应该将onchange事件分别添加到每一个单选按钮上
for (var i = 0; i < login.gender.length; i++) {
login.gender[i].onchange = function () {
// this是发生事件的当前元素(上下文对象)
// 重复点击一个按钮不会触发,只有改变选择才会有效
console.log(this.value);
}
}
// 复选框与单选按钮是类似的,也是返回一组相关元素
for (var i = 0; i < login['hoppy[]'].length; i++) {
login['hoppy[]'][i].onchange = function () {
// this是发生事件的当前元素(上下文对象)
// 重复点击一个按钮不会触发,只有改变选择才会有效
console.log(this.value);
}
}
// 下拉列表select中的name当前值,就是有selected属性的option中的value值
// 当前selected属性添加到了第3项上,第一项加也不加是一样的,默认就是它
console.log(login.area.value);
login.area.onchange = function () {
console.log(this.value);
}
</script>
</body>
</html>点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号