一、实验目的掌握小程序 form、input、button 表单组件的使用理解表单提交、重置事件运用海伦公式实现三角形面积计算掌握wx.showToast消息提示 API。作业需求输入三角形三条边长使用海伦公式计算面积做合法性校验任意两边之和必须大于第三边不合法弹出提示并清空输入新增重置按钮点击清空所有输入框隐藏计算结果。海伦公式 \(s\dfrac{abc}{2}\) \(area\sqrt{s(s-a)(s-b)(s-c)}\)参考官方文档form 组件form | 微信开放文档wx.showToastwx.showToast(Object object) | 微信开放文档二、项目目录结构form组件├─ pages│ └─ index│ ├─ index.js //业务逻辑、表单事件、海伦公式计算│ ├─ index.json│ ├─ index.wxml //页面表单结构│ └─ index.wxss //页面局部样式├─ app.js├─ app.json└─ app.wxss //全局公共样式三、完整代码实现1、页面结构 pages/index/index.wxml关键点form绑定bindsubmit提交事件、bindreset重置事件input 必须设置name属性提交表单后作为取值 keyfocustrue打开页面自动聚焦第一个输入框typedigit调出带小数点数字键盘真机生效button 设置formtypesubmit提交表单formtypereset触发重置wx:if根据visible变量条件渲染面积结果。!--index.wxml--navigation-bar titleform组件 back{{false}} colorblack background#FFF/navigation-barscroll-view classscrollarea scroll-y typelistview classboxview classtitle三角形面积计算器/view!--表单绑定提交、重置事件--form bindsubmitformSubmit bindresetformResetinput typedigit placeholder请输入三角形第一条边长 namea focustrue value{{sideA}}/input typedigit placeholder请输入三角形第二条边长 nameb value{{sideB}}/input typedigit placeholder请输入三角形第三条边长 namec value{{sideC}}/button typeprimary form-typesubmit计算/button!--作业新增重置按钮--button form-typereset重置/button/form!--条件渲染visible为true才展示面积--view wx:if{{visible}} classresult三角形的面积为{{area}}/view/view/scroll-view2、页面逻辑 pages/index/index.js// index.jsPage({data: {visible: false, // 是否展示面积结果sideA: ,sideB: ,sideC: ,area: 0},/*** 表单提交事件计算三角形面积* param {Object} e 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))}const visible area 0 ? true : false;this.setData({area,visible})},/*** 清空输入与结果*/clear() {this.setData({sideA: ,sideB: ,sideC: ,visible: false})},/*** 作业新增重置按钮触发事件*/formReset() {console.log(点击重置按钮);this.clear();}})3、页面样式 pages/index/index.wxss/**index.wxss**/page {height: 100vh;display: flex;flex-direction: column;}.scrollarea {flex: 1;overflow-y: hidden;}input,button {font-size: 40rpx;margin: 40rpx 0;}input {border-bottom: 2rpx solid blue;}.result {font-size: 40rpx;color: blue;}4、全局样式 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;}四、核心知识点总结1.form 表单组件bindsubmit当点击formtypesubmit按钮触发表单提交事件表单数据存放于 e.detail.value依赖 input 的 name 作为 key没有 name 拿不到值。bindreset点击formtypereset按钮触发重置事件⚠️注意小程序原生 reset 只会清空视图输入框不会自动清空 Page 的 data 变量必须手动调用setData清空数据。submit、reset 类型按钮必须写在form标签内部才会生效。2.input 输入框focustrue页面加载自动获得光标焦点typedigit弹出带小数点数字键盘真机上才会看到效果模拟器不出现数字键盘input 提交返回全部是字符串需要parseFloat()转换成数字做数学运算。3.wx.showToast 消息提示 API表格参数说明title提示文字内容icon图标none代表不显示图标可以支持多行文本duration提示框显示毫秒时长4. 条件渲染wx:if{{visible}}当visible为 true 渲染标签false 直接移除标签用来控制面积结果是否展示。五、踩坑记录作业报告加分input 忘记写name属性e.detail.value拿不到表单数据不使用parseFloat转换直接拿字符串做加减会发生字符串拼接而不是数学计算把重置按钮写在 form 标签外面formtypereset失效不会触发bindreset只依赖原生 reset不手动 setData 清空 data页面视图和 JS 数据状态不一致typedigit数字键盘模拟器看不到需要手机真机调试。六、运行效果打开页面光标自动定位到第一个输入框输入合法三边例如 30、40、50点击计算页面输出三角形面积 600输入不满足三角形条件的边长弹出黑色 Toast 提示输入框清空点击重置按钮所有输入框清空面积结果消失。七、小结form 表单是小程序收集用户输入的重要组件提交事件获取表单数据每个表单控件必须配置 name。表单拿到的数据都是字符串要手动转为数字参与计算。原生重置事件仅操作视图业务数据需要我们手动调用setData完成清空。结合条件渲染和 Toast 提示可以完成完整表单校验交互。拓展除了 form 提交input 也可以绑定bindinput实时监听每一次输入。
企业数字化 ERP 产品动态
相关推荐
Keil下嵌入式内存破坏调试全攻略:从现象到实战 我搞嵌入式开发这些年,最怕遇到的不是逻辑复杂的功能实现,而是那种“程序跑着跑着突然就死了”、“变量莫名其妙被改掉”、“上电稳定运行、加压震动就复位”的灵异问题。十有八九,这些妖魔鬼怪都是内存破坏搞的鬼。内存破坏这东西在C/C开发里… · 2026/9/24 22:46:55
JavaWeb在线考试系统毕设源码解析:JSP+Servlet+MySQL部署全解 简介:这是一套基于Java Web的在线考试系统完整项目,面向计算机相关专业正在做毕设的学生,以及需要项目实战练习的Java学习者。系统采用Java EE技术栈,搭配MySQL数据库与Tomcat服务器,涵盖JSP前端页面与Java后端逻辑&am… · 2026/9/24 22:46:55
二维前缀和与二分查找:LeetCode 1292最大正方形边长最优解 刷过LeetCode 1292这道题的朋友应该都有印象,第一次看到“元素和小于等于阈值的正方形最大边长”时,我第一反应是直接暴力枚举所有正方形,然后把每个正方形内的元素加起来比较。结果可想而知,提交之后超时得明明白白。后来认真做了… · 2026/9/24 23:20:35
32岁程序员猝死警醒:Android开发者的健康自救与职业进阶 “广州某互联网公司,32岁Android程序员意外猝死,公司火速清空了他的工位。”这条新闻在技术群转了好几轮,说实话,看到“32岁”和“Android”这两个词的时候,我心底咯噔了一下——这不就是每天坐在我附近的某个同事&… · 2026/9/24 23:20:35
LeetCode 1292:二维前缀和与二分答案优化枚举,求解最大正方形 第一次在 LeetCode 上看到 1292 这道题时,我的第一反应是:这不就是二维前缀和的模板题吗?但真正动手写之后才发现,前缀和只是基础,真正的考点是后面那四个字——枚举优化。题目要求在一个 m x n 的矩阵中找到一个正方形… · 2026/9/24 23:20:35
基于PSO+BGA混合算法的热电联产经济调度Matlab实现 做电力系统优化调度的,应该都绕不开热电联产经济调度(CHPED)这个方向。表面看就是一个带约束的非线性优化问题,真上手做才知道处处是坑——机组出力有上下限、热和电之间还有耦合可行域、启停状态又是离散量。最近我完整跑通了一套… · 2026/9/24 23:20:35
内网穿透与DDNS域名避坑:长期低价的稳定选择 家里 NAS 上跑着 frp 内网穿透,手机里装的是 DDNS 自动更新脚本,周末想远程连回家里看个文件,结果半天连不上——查到最后,不是我服务器的锅,是当初随便注册的免费域名被注册局收回了。这种坑踩过一次之后,… · 2026/9/24 23:20:29
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44