vant的van-form组件外部button触发submit事件问题

本文探讨了在不同浏览器中按钮元素type属性的默认差异,特别是InternetExplorer与其他浏览器的区别。通过引入Vant组件库,利用`<van-button native-type=button>`来指定原生button标签的type属性,确保在各种环境下行为一致。这有助于提高前端应用的跨浏览器兼容性和用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

外部button:发送短信验证码

触发原因:

type 属性规定按钮的类型。
提示:请始终为按钮规定 type 属性。Internet Explorer 的默认类型是 “button”,而其他浏览器中(包括 W3C 规范)的默认值是 “submit”。

vant的解决:

<van-button native-type="button">
		发送短信验证码
</van-button>

# native-type  指定原生 button 标签的 type 属性
<template> <van-form @submit="submitForm" @failed="onFailed" ref="ruleFormRef" :model="form"> <van-cell-group> <van-field v-model="form.username" label="账号:" placeholder="请输入账号" clearable name="username" :rules="usernameRules" ></van-field> </van-cell-group> <van-cell-group> <van-field v-model="form.password" label="密码:" placeholder="请输入密码" name="password" clearable type="password" :rules="passwordRules" ></van-field> </van-cell-group> <van-cell-group> <van-button block round type="primary" native-type="submit">登录</van-button> </van-cell-group> </van-form> </template> <script setup> import { ref, reactive } from 'vue' import { login, getUser } from '../api' import useToken from '../stores/token' import useUser from '../stores/user' import { useRouter } from 'vue-router' const { updateToken } = useToken() const { updateUser } = useUser() const router = useRouter() const form = reactive({ username: 'jhh', password: '123456' }) const ruleFormRef = ref() // 定义验证规则 const usernameRules = ref([ { required: true, message: '用户名不能为空' }, { pattern: /^\w{3,16}$/, message: '用户名长度为3-16个字符' } ]) const passwordRules = ref([ { required: true, message: '密码不能为空' }, { pattern: /^\w{6,24}$/, message: '密码必须为6-24位英文字母或数字' } ]) // 表单提交函数 const submitForm = async values => { const data = await login(values) if (data) { updateToken(data.token) const user = await getUser() updateUser({ isLogin: true, username: user.username, avatar: user.avatar }) router.push({ name: 'user' }) } } const onFailed = errorInfo => { console.log('failed', errorInfo) } </script> <style lang="less" scoped> button { position: fixed; top: 200px; } </style>
最新发布
07-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开发路上的AZhe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值