微信小程序|form 表单实战,三角形面积计算器(带重置按钮作业)
前言在小程序开发中form表单组件用来收集用户输入搭配input输入框、button按钮完成数据提交是非常高频的基础组件。本篇是课堂案例 4.1做一个三角形面积计算器用户输入三角形三条边长利用海伦公式自动计算面积同时做合法性校验如果三边不满足三角形构成规则弹出提示并清空输入框。作业拓展增加重置按钮一键清空表单内容。官方文档参考 form 组件form | 微信开放文档 showToast 提示框wx.showToast(Object object) | 微信开放文档实现效果预览页面有 3 个数字输入框打开页面第一个输入框自动获得焦点真机弹出带小数点数字键盘。输入合法三边例如30、40、50点击计算页面输出三角形的面积为600。输入非法数据例如30、40、80弹出 Toast 提示问题三角形的两条边之和小于等于第三条边输入框自动清空。点击重置按钮清空全部输入隐藏计算结果作业要求。项目目录结构form组件├─ pages│ └─ index│ ├─ index.js│ ├─ index.wxml│ ├─ index.wxss│ └─ index.json├─ app.js├─ app.json└─ app.wxss一、页面结构 pages/index/index.wxml重点知识点form bindsubmitformSubmit绑定表单提交事件input 必须设置name属性表单提交时作为 key 取值没有 name 拿不到表单数据typedigit真机调出带小数点的数字键盘focustrue页面加载第一个输入框自动获取光标button 设置formtypesubmit点击触发 form 的 bindsubmit 事件作业新增重置按钮使用普通bind:tap绑定点击事件wx:if{{visible}}条件渲染控制计算结果显示隐藏。!--index.wxml--view classboxview classtitle三角形面积计算器/viewform bindsubmitformSubmitinput typedigit placeholder请输入三角形第一条边长 namea focustrue value{{sideA}} /input typedigit placeholder请输入三角形第二条边长 nameb value{{sideB}} /input typedigit placeholder请输入三角形第三条边长 namec value{{sideC}} /button typeprimary form-typesubmit计算/button/form!--作业新增重置按钮--button bind:tapclear重置/buttonview wx:if{{visible}} classresult三角形的面积为{{area}}/view/view二、业务逻辑 pages/index/index.js逻辑流程表单提交触发formSubmit(e)e.detail.value拿到表单全部输入input 返回的是字符串使用parseFloat()转为浮点数校验三角形规则任意两边之和必须大于第三边不满足规则调用clear()清空输入框调用wx.showToast()弹出提示满足规则使用海伦公式计算三角形面积clear()函数复用非法情况和重置按钮都调用该函数清空表单与结果。海伦公式\(s\frac{abc}{2}\)\(area\sqrt{s(s-a)(s-b)(s-c)}\)// index.jsPage({data: {visible: false,sideA: ,sideB: ,sideC: ,area: 0},// form表单提交事件formSubmit(e) {console.log(e)let sideANum parseFloat(e.detail.value.a)let sideBNum parseFloat(e.detail.value.b)let sideCNum parseFloat(e.detail.value.c)let area 0// 判断三角形合法性任意两边之和大于第三边if ((sideANum sideBNum sideCNum) ||(sideANum sideCNum sideBNum) ||(sideBNum sideCNum sideANum)) {this.clear()wx.showToast({title: 问题三角形的两条边之和小于等于第三条边,icon: none,duration: 2000})return} else {// 海伦公式计算面积const s (sideANum sideBNum sideCNum) / 2area Math.sqrt(s * (s - sideANum) * (s - sideBNum) * (s - sideCNum))}let visibleif (area 0) {visible true} else {visible false}this.setData({area,visible})},//清空输入框、隐藏结果计算非法、重置按钮共用该方法clear() {this.setData({sideA: ,sideB: ,sideC: ,visible: false,area: 0})}})三、页面样式 pages/index/index.wxss/**index.wxss**/page {height: 100vh;display: flex;flex-direction: column;}input,button {font-size: 40rpx;margin: 40rpx 0;}input {border-bottom: 2rpx solid blue;}.result {font-size: 40rpx;color: blue;}四、全局样式 app.wxss/**app.wxss**/.box {margin: 20rpx;padding: 20rpx;border: 2rpx solid silver;}.title {font-size: 40rpx;font-weight: bolder;text-align: center;margin-bottom: 30rpx;color: red;}五、项目配置 app.json⚠️ 去掉 skyline 相关配置避免页面空白渲染异常{pages: [pages/index/index],window: {navigationBarTitleText: form组件,navigationBarBackgroundColor: #ffffff,navigationBarTextStyle:black},sitemapLocation: sitemap.json}核心知识点总结1.form 表单组件bindsubmit表单提交事件点击formtypesubmit的按钮触发表单内每一个输入组件必须写name提交后通过e.detail.value.name获取值e.detail.value收集 form 内部所有表单组件的值。2.input 输入框常用属性focustrue自动获取焦点typedigit真机唤起带小数点数字键盘模拟器看不到该键盘效果。3.wx.showToast 消息提示 APItitle提示文字icon:none不显示图标支持两行文本duration提示框显示毫秒数。4. 条件渲染wx:if{{visible}}根据visible布尔值控制 DOM 显示和销毁。5. 事件两种绑定方式在 form 内部按钮设置formtypesubmit走表单bindsubmit事件普通按钮直接使用bind:tap函数名绑定点击事件本案例重置按钮使用该方式。常见踩坑汇总❌input 忘记写name → e.detail.value拿不到表单数据全部为undefined。❌直接拿表单返回字符串做数学运算没有使用parseFloat()转数字计算结果 NaN。❌模拟器看不到数字键盘typedigit仅真机有效模拟器不展示数字键盘。❌页面空白app.json 删除 skyline 配置清除全部缓存重新编译。❌toast 文字只显示 7 个字设置icon:none才支持长文本提示。拓展思考真实项目中表单几乎都会做输入校验判断是否为空、判断输入格式是否符合业务需求本案例完成三角形三边合法性校验就是表单校验的入门练习。

相关新闻

Python coding + ML + general coding ability

Python coding + ML + general coding ability

# Linked List(链表)面试知识体系与记忆模板> 核心原则:**Array 用 index;Linked List 用 pointer。**>> 链表题的核心不是“访问元素”,而是“移动和重新连接节点”。---## 1. 基本结构texthead↓[1] → [2]…

2026/9/24 3:47:45 阅读更多 →
鼎讯信通DXG-800光缆普查仪OTDR与普查双功能解析

鼎讯信通DXG-800光缆普查仪OTDR与普查双功能解析

鼎讯光缆普查仪DXG-800系列是一款把光缆查线功能和完整OTDR功能集成在一起的精密仪器。从功能配置来看,它的定位很明确:一台设备同时解决“找哪根缆”和“缆哪里有问题”两个问题。普查功能方面,DXG-800采用单纤检测方式,无须回环…

2026/9/24 3:46:44 阅读更多 →
Fragment  onActivity result无响应

Fragment onActivity result无响应

现状及原因 如果一个view中创建了一个fragment,fragment主要是为了处理一个拍照组件选择照片后返回的activityresult处理或者其他页面返回后需要在activityresult进行结果处理,切记,切记最好不要用无UI式的弱引用fragment,而是需要…

2026/9/24 3:46:44 阅读更多 →

最新新闻

WorkBuddy能给企业带来什么?从AI工具到业务智能体

WorkBuddy能给企业带来什么?从AI工具到业务智能体

很多公司现在已经在用 AI 了。但你去问员工“平时怎么用”,答案通常都差不多。写个方案的时候让 AI 帮忙改一下,开完会把录音或者文字丢进去整理纪要,销售写客户邮件时让 AI 润色几句。财务手里有一张乱七八糟的 Excel,也可能先让…

2026/9/24 4:29:14 阅读更多 →
为什么Jev诞生在OpenAI之外:System One模型与RLHF的隐藏代价

为什么Jev诞生在OpenAI之外:System One模型与RLHF的隐藏代价

Diogo Almeida(迭戈阿尔梅达)这周过得并不轻松。作为TypeSafe的联合创始人兼CEO,他刚刚发布了Jev——一个在整条时间线上刷屏的产品,而他自己形容当下的状态是"情绪上从未这么糟过",像一具被各种突发状况拖垮…

2026/9/24 4:29:14 阅读更多 →
鼎讯信通G-4000B光缆路由追踪仪的手机远程操作解析

鼎讯信通G-4000B光缆路由追踪仪的手机远程操作解析

在光缆故障追踪中,一个常见的尴尬是:仪表在机房或井口,人却在另一端敲击光缆,两边沟通全靠对讲机,效率低还容易出错。鼎讯光缆路由追踪仪G-4000B针对这个痛点,加入了手机APP远程控制功能,让单人…

2026/9/24 4:29:14 阅读更多 →
小米数字系列迎来史上最大升级,卢伟冰:AI全面改造智能手机的开始

小米数字系列迎来史上最大升级,卢伟冰:AI全面改造智能手机的开始

9月23日,小米秋季新品发布会在北京举行。小米18 Pro、小米18 Pro Max正式发布,性能、屏幕、背屏、影像等全面升级;小米平板9系列、小米手环11、小米手表S5以及多款科技家电新品同步亮相。小米18 Pro系列带来多项产品创新。全系搭载超级像素2.…

2026/9/24 4:29:13 阅读更多 →
人声音色怎么克隆

人声音色怎么克隆

如果需要统一视频中同一角色的跨片段声线,或是为旁白配置指定音色,可以借助专业剪辑工具的音色克隆功能完成处理。目前剪映专业版已支持基础的音色克隆与角色音色配置功能,处理前需要确认你使用的音色样本已获得合法授权,本文将基…

2026/9/24 4:29:13 阅读更多 →
LPC2388实战指南:AMBA总线与ARM7嵌入式开发深度解析

LPC2388实战指南:AMBA总线与ARM7嵌入式开发深度解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 4:28:13 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →