微信小程序(组件 -- 表单:按钮)

本文深入解析小程序中的button按钮组件,涵盖其属性、样式、微信开放能力及hover效果,帮助开发者全面掌握button组件的使用技巧。

一、button按钮组件

button按钮属性
属性类型默认值是否必填作用
sizestringdefault按钮的大小
typestringdefault按钮的样式类型
plainbooleanfalse按钮是否镂空,背景色透明
disabledbooleanfalse是否禁用
loadingbooleanfalse名称前是否带 loading 图标
button按钮组件–按钮大小size属性值
说明
default默认大小
mini小尺寸
<button size="default">默认按钮</button>
<button size="mini">迷你按钮</button>

在这里插入图片描述
查看源码,分析button默认样式与小尺寸button
在这里插入图片描述

由此可以分析出button按钮的边框是由伪元素button:after设置的。
所以,若想去除小程序按钮默认边框,给button设置border:none无效,只能通过伪元素去除默认边框。

查看源码,小尺寸button按钮样式属性
在这里插入图片描述

按钮type样式类型
说明
primary绿色
default白色
warn红色
<button type="primary">主要按钮样式类型</button>
<button type="default">默认按钮样式类型</button>
<button type="warn">警告按钮样式类型</button>

在这里插入图片描述

按钮plain是否镂空
<view>按钮plain是否镂空</view>
<button plain="true" type="primary">主要按钮样式类型</button>
<button plain="true" type="default">默认按钮样式类型</button>
<button plain="true" type="warn">警告按钮样式类型</button>
/**源码 */
button[plain] {
	color: #353535;
	border: 1px solid #353535;
	background-color: transparent;
}

在这里插入图片描述

按钮是否禁用
<button disabled="true" type="primary">主要按钮样式类型</button>
<button disabled="true" type="default">默认按钮样式类型</button>
<button disabled="true" type="warn">警告按钮样式类型</button>
/**源码 */
button[disabled][type=primary] {
	background-color: #9ed99d;

}
button[disabled] {
	color: rgba(255,255,255,.6);
}

在这里插入图片描述

按钮是否显示loading图标
<view>按钮是否显示loading图标</view>
<button loading="true" type="primary">主要按钮样式类型</button>
<button loading="true" type="default">默认按钮样式类型</button>
<button loading="true" type="warn">警告按钮样式类型</button>
/**源码 */
button[loading][type=primary] {
	color: rgba(255,255,255,.6);
	background-color: #179b16;
}

在这里插入图片描述
分析按钮显示loading图标源码
在这里插入图片描述
::before实现loading样式,::after实现按钮基本样式(解决1px适配问题)
在这里插入图片描述

按钮微信开放能力
open-typestring微信开放能力

微信小程序开放了很多端口,实现多种功能,例如客服会话、转发、获取用户信息及手机号、授权页面、意见反馈等。

  • open-type —微信开放能力常用属性值,篇幅问题,详见下节
属性值作用
contact打开客服会话,如果用户在会话中点击消息卡片后返回小程序,可以从 bindcontact 回调中获得具体信息
share触发用户转发
getPhoneNumber获取用户手机号,可以从bindgetphonenumber回调中获取到用户信息
getUserInfo获取用户信息,可以从bindgetuserinfo回调中获取到用户信息
openSetting打开授权设置页,可以从bindopensetting回调中获取相关设置
feedback打开“意见反馈”页面,用户可提交反馈内容并上传日志,开发者可以登录小程序管理后台后进入左侧菜单“客服反馈”页面获取到反馈内容
  • button按钮hover类属性
属性类型默认值是否必填作用
hover-classstringnone指定按下去的样式类
hover-stop-propagationbooleanfalse指定是否阻止冒泡
hover-start-timenumber20按住后多久出现点击态,单位毫秒
hover-stay-timenumber70手指松开后点击态保留时间,单位毫秒

对比
①view视图组件hover-start-time默认50,hover-stay-time默认400
②navigator导航组件hover-start-time默认50,hover-stay-time默认600

form-type触发表单提交/重置操作
属性类型默认值是否必填作用
form-typestring用于 form 组件,点击分别会触发 form 组件的 submit提交/reset重置 事件
form-type 属性值
说明
submit提交表单
reset重置表单
<think>好的,我现在需要帮助用户了解如何在微信小程序中使用Vant-UI实现表单的非空校验。首先,我需要回顾一下用户提供的引用内容,确保答案准确。 用户引用了三个参考资料,其中提到了Vant表单组件的配置和使用,特别是在表单提交和组件引入方面的内容。引用3中的代码示例展示了如何在wxml中使用van-field和van-button,并且表单绑定了submit事件。这些信息是关键,因为非空校验通常与表单提交事件相关。 接下来,我需要考虑Vant-UI表单组件本身是否支持非空校验。根据常见的UI框架设计,比如Vant,表单组件可能会有required属性来标记必填项,但具体的验证机制可能需要结合小程序的原生表单验证或者自定义JavaScript函数来处理。 根据引用3中的代码,van-field有一个required属性,这应该用于显示必填标记。但用户的问题是关于非空验证,也就是在提交表单时检查这些字段是否已填写。因此,可能需要在小程序的form组件中绑定bindsubmit事件,并在对应的js文件中编写验证逻辑。 此外,van-button的form-type属性需要设置为'submit'才能触发表单提交。在示例代码中,用户可能使用了变量sub,但正确的做法应该是直接设置为'submit',或者通过数据绑定传递。这可能是一个需要注意的地方,避免因为form-type设置错误导致提交不触发。 然后,考虑如何在提交时进行非空验证。小程序的原生表单可以通过在form的bindsubmit事件中获取表单数据,然后在js中进行判断。例如,在提交处理函数中检查各个字段的值是否为空,如果为空,则显示错误提示;否则继续提交。 另外,Vant的van-field组件可能有自己的校验规则,或者需要结合小程序的WXS进行实时校验。不过根据引用中的信息,用户可能更倾向于在提交时进行整体验证,而不是实时校验。因此,重点应放在提交时的处理函数。 可能还需要使用WXSS来调整错误提示的样式,比如当字段为空时,显示红色边框或提示文字。但用户的问题主要是功能实现,样式方面可能次要。 总结步骤应该是: 1. 引入Vant组件,正确配置json文件。 2. 在wxml中使用van-field设置required属性,并在form中放置提交按钮。 3. 在js中编写表单提交函数,检查各字段的值是否为空。 4. 如果为空,使用小程序的API(如wx.showToast)提示用户。 5. 否则,处理表单数据,进行提交或其他操作。 需要确保示例代码正确,比如form的bindsubmit是否正确绑定,van-button的form-type是否为'submit',以及js中如何获取表单数据。可能还需要使用this.setData来更新状态,比如禁用按钮直到所有必填项满足条件。 最后,根据用户提供的引用,确保答案中的代码示例与引用中的结构一致,比如使用van-field和van-button的配置方式,以及表单的结构。同时,可能需要提到如何通过JSON配置表单规则,如引用1中提到的动态表单配置,但用户的问题更关注非空校验的具体实现,因此可能不需要深入讨论动态配置,除非相关。</think>### 微信小程序 Vant-UI 表单非空校验实现步骤 #### 1. 配置 Vant-UI 组件 在 `app.json` 中引入表单组件: ```json { "usingComponents": { "van-field": "@vant/weapp/field/index", "van-button": "@vant/weapp/button/index" } } ``` #### 2. 编写表单结构(WXML) ```html <form bindsubmit="onSubmit"> <!-- 必填项:会员号 --> <van-field name="vipAccount" label="会员号" required clearable placeholder="请输入会员号" value="{{ formData.vipAccount }}" bind:change="onFieldChange" /> <!-- 提交按钮 --> <van-button form-type="submit" type="primary" custom-class="submit-btn" >提交</van-button> </form> ``` #### 3. 实现非空校验逻辑(JS) ```javascript Page({ data: { formData: { vipAccount: '' // 初始化字段 } }, // 字段输入监听 onFieldChange(e) { const { field } = e.currentTarget.dataset; this.setData({ [`formData.${field}`]: e.detail }); }, // 提交验证 onSubmit(e) { const { vipAccount } = this.data.formData; // 非空校验 if (!vipAccount.trim()) { wx.showToast({ title: '会员号不能为空', icon: 'none', duration: 2000 }); return; } // 通过校验后的操作 wx.request({ url: 'your_api_url', method: 'POST', data: e.detail.value, success: () => { wx.showToast({ title: '提交成功' }); } }); } }); ``` #### 关键点说明: 1. **`required`属性**:在 `van-field` 中设置该属性会显示红色星号标记必填项[^3] 2. **数据绑定**:通过 `value="{{ formData.vipAccount }}"` 实现双向数据绑定 3. **提交拦截**:在 `onSubmit` 中先进行手动校验,校验失败时阻止表单提交 4. **错误提示**:使用 `wx.showToast` 显示校验失败提示 #### 效果增强建议: - 添加实时校验:通过 `bind:blur` 监听失焦事件立即校验 - 样式优化:为非法字段添加红色边框提示 - 禁用按钮:在校验未通过时禁用提交按钮
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值