很多新手学完 jQuery 基础语法后,一到实际开发就犯愁:表单提交时总有人输错内容,还得后台再判断一遍;想做个图片轮播效果,网上找的插件要么太复杂,要么改个样式就报错。其实啊,表单验证和图片轮播是网页开发里最常用的功能,用 jQuery 自己写既灵活又好改。今天兔子哥就带大家手把手做这两个实战案例,做完你会发现,原来自己开发插件也没那么难。
实战一:表单验证功能 —— 让错误提示 “主动找上门”
做表单验证的目的很简单:用户填内容时就告诉他们哪错了,不用等提交后再返工。咱们以注册表单为例,包含用户名、密码、邮箱三个字段,实现实时验证和提交检查。
核心功能设计
- 实时验证:用户输入时或输入完离开输入框(失焦事件)就验证,比如用户名太短、密码没数字。
- 错误提示:在输入框旁边显示红色文字,告诉用户具体错在哪,比如 “密码至少 8 位哦”。
- 提交检查:点提交按钮时,先检查所有字段是否符合要求,有错误就阻止提交,没错误才让表单提交。
具体实现步骤
第一步先写 HTML 结构,表单里放三个输入框和提交按钮,每个输入框旁边留个空标签放错误提示:
html
<form id="registerForm"><div class="form-item"><label>用户名:label><input type="text" name="username" class="input"><span class="error-tip">span>div><div class="form-item"><label>密码:label><input type="password" name="password" class="input"><span class="error-tip">span>div><div class="form-item"><label>邮箱:label><input type="email" name="email" class="input"><span class="error-tip">span>div><button type="submit">注册button>form>第二步写验证规则和 jQuery 代码。先定义每个字段的验证规则,比如用户名长度 3-10 位,密码至少 8 位且含数字:
javascript
// 验证规则var rules = {username: function(val) {if (val.length < 3 || val.length > 10) {return "用户名得是3-10位哦";}return true; // 验证通过},password: function(val) {if (val.length < 8) {return "密码至少8位呀";}if (!/\d/.test(val)) { // 检查是否含数字return "密码得有数字哦";}return true;},email: function(val) {if (!/^[\w]+@[\w]+\.[\w]+$/.test(val)) {return "邮箱格式不对哦,比如xxx@xx.com";}return true;}};然后绑定事件,实现实时验证和提交检查:
javascript
// 实时验证(失焦事件)$(".input").blur(function() {var $this = $(this);var name = $this.attr("name");var val = $this.val();var result = rules[name](val); // 调用对应规则验证var $tip = $this.next(".error-tip");if (result === true) {$tip.text("").removeClass("error"); // 验证通过清空提示} else {$tip.text(result).addClass("error"); // 显示错误提示}});// 提交验证$("#registerForm").submit(function(e) {var isAllValid = true;// 遍历所有输入框,手动触发验证$(".input").each(function() {$(this).blur(); // 触发失焦验证if ($(this).next(".error-tip").hasClass("error")) {isAllValid = false; // 有错误就标记}});if (!isAllValid) {e.preventDefault(); // 阻止表单提交alert("有错误哦,检查一下~");}});新手常踩的坑及解决
有朋友会问,为什么实时验证在输入时不触发,非要等离开输入框?其实可以加
input事件实现输入时验证,但太频繁触发会影响性能,失焦验证更合适。还有人发现动态添加的表单字段不验证,这是因为事件没绑定到动态元素上,改用事件委托就行:$(document).on("blur", ".input", function(){...})。实战二:图片轮播插件 —— 自己写的才好改样式
网上的轮播插件功能多但代码复杂,改个箭头样式都得找半天。咱们自己写个简易轮播,包含自动播放、手动切换、指示器功能,样式想怎么改就怎么改。
核心功能设计
- 自动播放:每隔 3 秒切换到下一张图片,循环播放。
- 手动控制:左右箭头切换上一张 / 下一张,点击指示器跳转到对应图片。
- 无缝滚动:切换图片时用平滑过渡,最后一张切到第一张不卡顿。
具体实现步骤
第一步写 HTML 结构,轮播容器里放图片列表、左右箭头和指示器:
html
<div class="carousel"><ul class="carousel-list"><li><img src="img1.jpg" alt="图片1">li><li><img src="img2.jpg" alt="图片2">li><li><img src="img3.jpg" alt="图片3">li>ul><button class="prev">←button><button class="next">→button><div class="indicators"><span class="active">span><span>span><span>span>div>div>第二步用 CSS 设置样式,让图片横向排列,超出容器部分隐藏,指示器默认灰色、选中红色:
css
.carousel { position: relative; width: 600px; height: 400px; overflow: hidden; }.carousel-list { position: absolute; width: 300%; height: 100%; margin: 0; padding: 0; list-style: none; }.carousel-list li { float: left; width: 33.333%; height: 100%; }.carousel-list img { width: 100%; height: 100%; object-fit: cover; }.prev, .next { position: absolute; top: 50%; transform: translateY(-50%); width: 40px; height: 40px; }.indicators { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); }.indicators span { display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: #ccc; margin: 0 5px; }.indicators span.active { background: #f00; }第三步写 jQuery 逻辑,实现切换功能:
javascript
$(function() {var $carousel = $(".carousel");var $list = $carousel.find(".carousel-list");var $items = $carousel.find("li");var $prev = $carousel.find(".prev");var $next = $carousel.find(".next");var $indicators = $carousel.find(".indicators span");var index = 0; // 当前显示的图片索引var len = $items.length;var timer = null; // 自动播放计时器// 切换到指定索引的图片function goToIndex(idx) {index = idx;// 处理边界:最后一张切到第一张,第一张切到最后一张if (index < 0) index = len - 1;if (index >= len) index = 0;// 计算位移:每张占33.333%,位移就是 -index * 33.333%$list.animate({ left: -index * 100 / len + "%" }, 500);// 更新指示器状态$indicators.removeClass("active").eq(index).addClass("active");}// 自动播放function autoPlay() {timer = setInterval(function() {goToIndex(index + 1); // 每隔3秒切下一张}, 3000);}// 绑定事件$next.click(function() { goToIndex(index + 1); });$prev.click(function() { goToIndex(index - 1); });$indicators.click(function() { goToIndex($(this).index()); });// 鼠标悬停暂停自动播放,离开继续$carousel.hover(function() { clearInterval(timer); },function() { autoPlay(); });// 启动自动播放autoPlay();});功能对比表
| 轮播功能 | 自己开发优势 | 第三方插件优势 | 适合场景 |
|---|---|---|---|
| 样式修改 | 结构清晰,改 CSS 直接生效 | 功能多但样式嵌套深,难改 | 需要个性化样式 |
| 功能扩展 | 代码熟,想加功能随时加 | 功能全但多余功能占资源 | 只需要基础功能 |
| 学习价值 | 理解原理,提升技能 | 省时间但不知原理 | 新手练手 |
实战总结:从案例中学到的开发思路
做这两个案例时,有几个思路特别重要,新手朋友可以记下来:
- 先设计功能再写代码:比如表单验证先想好验证哪些字段、怎么提示,轮播先确定要自动播放还是手动切换,不然写着写着就乱了。
- 用函数封装逻辑:把重复用的代码写成函数,比如轮播的
goToIndex,既简洁又好维护,改逻辑时只改一处就行。 - 多考虑边界情况:表单验证要考虑空输入、格式错误,轮播要处理第一张和最后一张的切换,这些细节做好了,功能才稳定。
兔子哥觉得,实战案例是学 jQuery 最好的方式,比光看语法教程有用多了。刚开始可以照着写,写完后试着加功能,比如给表单加 “确认密码” 验证,给轮播加图片加载动画。遇到报错别慌,大部分是选择器选错了或逻辑顺序错了,用
console.log打印变量看看,慢慢就能找到问题。其实自己开发插件没那么难,关键是敢动手试。这两个案例学会了,你会发现很多网页功能都能举一反三,比如把表单验证改改就能用在登录页,轮播代码稍改就能做商品图片展示。希望大家多练实战,技术都是在一次次动手开发中提升的,加油哦!
标签: registerForm 手把手
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
评论列表
实战案例表单验证图片轮播易学