原生form表单
form
表单元素大家可能都用到过,除了可以提交表单外,还有一些内置的表单校验,比如 require
、 minlength
、 maxlength
,还有各种类型的 input
,比如 type=email
可以校验是否是邮箱类型,如果不满足还可以使用 pattern
进行正则校验。
原生的表单验证大概如下
虽然丑陋,功能却很强大,基本可以满足一般的需求,不过ui终究过于原生,而且也不方便自定义,所以很多情况下这种默认的表单验证并不使用。
下面来看看 xy-form
下的效果
结构基本和原生类似,也不需要额外的 js
逻辑
可以说丑小鸭立马变成白天鹅了。
xy-form
xy-form
是 xy-ui
新增了一类组件,主要用于表单提交和表单验证,完全可以取代原生 form
表单,下面简单介绍一下主要属性和方法,建议阅读在线文档 ,可以实时交互。
使用方式
使用方式很简单
npm
npm i xy-ui
cdn
<script type="module" src="/UploadFiles/2021-04-02/xy-form.js">或者直接从
github
拷贝源码。<script type="module" src='./node_modules/xy-ui/components/xy-form.js'></script> <!--或者--> <script type="module"> import './node_modules/xy-ui/components/xy-form.js'; </script>使用
<xy-form> ... </xy-form>表单默认行为
属性
xy-form
内置了以下属性,基于html5
规范。这里的默认行为指的是,点击
submit
按钮或者回车,表单首先对表单元素进行格式校验,如果有误则会将有误的地方标识出来,全部正确后才能进行提交。
- 表单地址
action
值为 URL
,规定向何处发送表单数据。
回车键会触发表单。
- 请求方式
method
规定请求方式,默认为 get
,可选 post
。
- 验证
novalidate
如果使用该属性,则提交表单时不进行验证。
方法
- 提交
submit
当表单内包含 htmltype="submit"
的按钮时,点击该按钮可以触发表单提交。
可通过 form.submit()
主动触发。
- 清空
reset
当表单内包含 htmltype="reset"
的按钮时,点击该按钮可以清空表单。
可通过 form.reset()
主动触发。
下面是一个最账号密码的登录框
<xy-form action="/login" method="post"> <xy-form-item legend="user"> <xy-input name="user" required placeholder="user"></xy-input> </xy-form-item> <xy-form-item legend="password"> <xy-input name="password" required type="password" placeholder="password" minlength="6"></xy-input> </xy-form-item> <xy-form-item> <xy-button type="primary" htmltype="submit">login</xy-button> <xy-button htmltype="reset">reset</xy-button> </xy-form-item> </xy-form>
渲染如下
首先输入框均设置了 required
属性,表示必填项,如果不输入在 submit
时会提示以下信息
其次,密码框规定了 minlength
属性,表示最小字符长度,如果不满足格式,会提示以下信息
当全部满足要求才能进行提交,可在控制台查看提交的表单数据,格式为formData,可转换json。
自定义表单
自定义表单提交
当表单带有 action
属性时,回车键可以触发表单提交,如果包含 htmltype="submit"
的按钮时,点击该按钮可以触发表单提交。
如果想手动通过 ajax
提交,可以去除 action
属性,这样就不会触发默认表单提交效果了。
可通过 form.formdata
获取表单的值。
sumbitBtn.onclick = function(){ fetch('/login', { method: 'POST', body: form.formdata, }) .then(function(data){ // }) }
自定义表单验证
默认情况下,如果验证失败,表单则不会提交。
可以通过表单的 form.checkValidity()
方法手动校验所有表单元素,也可通过 form.validity
获取验证合法性。
sumbitBtn.onclick = function(){ if(form.checkValidity()){ //全部验证通过 XyDialog.success({ title:"全部验证通过", content:JSON.stringify(form.formdata.json) }) } }
另外, xy-input
可以自定义校验规则,比如确认重复密码
pwdAgain.customValidity = { method:(el)=>{ return el.value == pwd.value; }, tips:'前后密码不一致' }
详情可参考xy-input 的文档
其他
xy-form
并不是一个独立的组件,很多表单元素,如 xy-input
、 xy-checkbox
、 xy-radio
等等均未提及,可参考 文档 ,有了这些组件,可以很轻松的完成表单校验,如文章开所示。
xy-form
是一个原生web组件,不限制于框架,可直接使用。如果想使用其他类似的组件,可关注xy-ui,汇集了其他各类常见交互组件,欢迎star~。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]