JavaScript表单对象访问与事件处理实战指南
本文详细解析JavaScript中获取表单对象的三种常用方式,包括通过ID、name属性及直接使用表单名。重点讲解onsubmit和onchange事件的应用场景,结合注册表单验证案例,演示如何拦截提交并执行前端校验逻辑,帮助开发者掌握基础表单交互与数据验证技巧。
本文整理并分享了JavaScript中处理表单事件的常见实现方式,供开发者参考与查阅。
获取表单对象的常用途径
一、获取表单对象的常用途径
第一种方式是通过<form>元素的id属性进行定位。
代码示例:var myform=document.getElementById("myformid"); //其中myformid为对应<form>元素的ID值。
第二种方式是利用<form>元素的name属性进行访问。
代码示例:var myform=document.forms["myformname"]; //其中myformname为对应<form>元素的名称。
第三种方式是直接通过表单名称访问表单对象。
代码示例:var myform=document.myformname; //其中myformname为对应<form>元素的名称。
表单中常用的事件类型
二、表单中常用的事件类型
1. onsubmit事件:当用户点击“提交”按钮时触发该事件,此事件可用于阻止表单的默认提交行为,常用于执行表单验证逻辑。
2. onchange事件:当用户修改输入内容且文本框失去焦点时触发该事件。
表单提交与验证案例
三、表单提交与验证案例
前端页面结构如下:

前端界面代码实现:
<form name="myform" action="javascript:alert('注册成功!');" method="post" onsubmit="return yanzheng();">
<table width="500px">
<tbody>
<tr>
<td>
用户名:
</td>
<td>
<input name="username" id="username" type="text" />
</td>
<td align="left">
<p style="color: #FF0000">*用户名长度在6-10之间</p>
</td>
</tr>
<tr>
<td>
密 码:
</td>
<td>
<input id="password" onchange="passwordleave()" type="password" />
</td>
<td align="left">
<p style="color: #FF0000">*
<input id="Button1" type="button" value="弱" style="background-color: #FF0000" />
<input id="Button2" type="button" value="中" style="background-color: #FF0000" />
<input id="Button3" type="button" value="强" style="background-color: #FF0000" />
<label id="lavel"></label>
</p>
</td>
</tr>
<tr>
<td>
年 龄:
</td>
<td>
<input id="age" type="text" />
</td>
<td align="left">
<p style="color: #FF0000">*</p>
</td>
</tr>
<tr>
<td>
性 别:
</td>
<td>
<input name="sex" type="radio" value="男" checked="checked" />男
<input name="sex" type="radio" value="女"/>女
</td>
<td align="left">
<p style="color: #FF0000">*</p>
</td>
</tr>
<tr>
<td>
内 容:
</td>
<td>
<input type="checkbox" name="content" value="新闻" />新闻
<input type="checkbox" name="content" value="娱乐" />娱乐
<input type="checkbox" name="content" value="教育" />教育
</td>
<td align="left">
<p style="color: #FF0000">*</p>
</td>
</tr>
<tr>
<td>
学 历:
</td>
<td>
<select name="edu_level" style="width: 74px">
<option value="1">小学</option>
<option value="2">中学</option>
<option value="3">大学</option>
<option value="4">大学以上</option>
</select>
</td>
<td align="left">
<p style="color: #FF0000">*</p>
</td>
</tr>
<tr>
<td>
爱 好:
</td>
<td>
<select name="like" size="6" multiple="multiple"
style="width: 72px; height: 108px">
<option value="1">篮球</option>
<option value="2">足球</option>
<option value="3">排球</option>
<option value="4">跑步</option>
<option value="5">登山</option>
<option value="6">健美</option>
</select>
</td>
<td align="left">
<p style="color: #FF0000">*</p>
</td>
</tr>
<tr>
<td>
<input id="Button4" type="button" onclick="checkinfo()" value="查看信息" /></td>
<td>
<input type="submit" name="tijiao" value="注册" />
</td>
<td>
<input type="reset" name="reset" value="重置" />
</td>
</tr>
</tbody>
</table>
</form>
对应的JavaScript脚本逻辑:
<script type="text/javascript">
function yanzheng() {
var b;
var a = document.getElementById("username"); //获取用户名值
var p = document.getElementById("password"); //获取密码值
var age = myform.age.value; //获取年龄值
if (a.value.length < 5 || a.value.length > 10) {
alert("您输入的用户名格式错误!");
return false;
}
else if (p.value.length < 5) {
alert("密码长度少于5!");
return false;
}
else if (!checkage(age)) {
return false;
}
else {
return true;
}
}
function checkage(a) { //检测年龄
var ch, age;
for (var i = 0; i < a.length; i++) {
ch = a.charAt(i);
if (ch < "0" || ch > "9") {
alert("请在年龄选项中输入数字!");
return false;
}
}
age = parseInt(a);
if (age < 10 || age > 100) {
alert("年龄不真实!");
return false;
}
return true;
}
function checkinfo() { //显示所有的信息
var username = myform.username.value; //获取用户名
var password = myform.password.value; //获取密码
var age = myform.age.value; //获取年龄
var sex = myform.sex; //获取性别
var osex = ""; //设置一个变量获取性别的选项
var content = myform.content; //获取内容
var ocontent = ""; //设置一个变量获取内容的选项
var eduleave = myform.edu_level; //获取学历
var oedu = ""; //设置一个变量获取学历的选项
var intersent = myform.like; //获取表单爱好
var olike = ""; //设置一个变量获取爱好的选项
for (var i = 0; i < sex.length; i++) { //性别
if (sex[i].checked) {
osex = sex[i].value;
}
}
for (var i = 0; i < content.length; i++) { //内容
if (content[i].checked) {
ocontent += content[i].value + " ";
}
}
for (var i = 0; i < eduleave.length; i++) { //学历
if (eduleave.selectedIndex >= 0) {
oedu = eduleave.options[eduleave.selectedIndex].text;
}
}
for (var i = 0; i < intersent.length; i++) { //爱好
if (intersent.options[i].selected) {
olike += intersent.options[i].text + " ";
}
}
alert("您的用户名为:" + username + "\n密码为:" + password + "\n年龄为:" + age + "\n性别为:" + osex + "\n内容为:" + ocontent + "\n学历为:" + oedu + "\n兴趣爱好为:" + olike);
}
function passwordleave() {
var passwordleavel = myform.password.value;
if (passwordleavel.length == "") {
document.getElementById("Button1").style.display = "none";
document.getElementById("Button2").style.display = "none";
document.getElementById("Button3").style.display = "none";
}
else {
if (passwordleavel.length <= "5") {
document.getElementById("Button1").style.display = "";
document.getElementById("Button2").style.display = "none";
document.getElementById("Button3").style.display = "none";
}
else if (passwordleavel.length <= "10") {
document.getElementById("Button1").style.display = "";
document.getElementById("Button2").style.display = "";
document.getElementById("Button3").style.display = "none";
}
else {
document.getElementById("Button1").style.display = "";
document.getElementById("Button2").style.display = "";
document.getElementById("Button3").style.display = "";
}
}
}
function startbody() {
document.getElementById("Button1").style.display = "none";
document.getElementById("Button2").style.display = "none";
document.getElementById("Button3").style.display = "none";
}
</script>
上述案例展示了基础的常规处理流程,未涉及复杂技术,旨在提供便捷的参考示例以便后续复用。
以上内容为本文的全部总结,期望对读者学习JavaScript程序设计有所帮助。
JS在setTimeout或Ajax回调中打开新标签页失败怎么处理
2026-11-05 15:50:12
JS直播协议选型:HLS、FLV与WebRTC的延迟与兼容性对比
2026-11-05 12:16:14
JS实现回到顶部:scrollTop赋值与浏览器兼容性处理
2026-11-04 23:43:35
JS使用classList动态添加、移除和切换CSS类名
2026-11-04 23:40:58
在 D3.js 中实现平滑过渡动画的技巧
2026-11-03 23:46:09
