基于原生JS验证表单组件:xy-form

简介: 基于原生JS验证表单组件:xy-form

原生form表单


form表单元素大家可能都用到过,除了可以提交表单外,还有一些内置的表单校验,比如requireminlengthmaxlength,还有各种类型的input,比如type=email可以校验是否是邮箱类型,如果不满足还可以使用pattern进行正则校验。

原生的表单验证大概如下


image.png


虽然丑陋,功能却很强大,基本可以满足一般的需求,不过ui终究过于原生,而且也不方便自定义,所以很多情况下这种默认的表单验证并不使用。


下面来看看xy-form下的效果

image.png

结构基本和原生类似,也不需要额外的js逻辑


可以说丑小鸭立马变成白天鹅了。


xy-form


xy-formxy-ui新增了一类组件,主要用于表单提交和表单验证,完全可以取代原生form表单,下面简单介绍一下主要属性和方法,建议阅读在线文档,可以实时交互。


使用方式


使用方式很简单


  • npm
npm i xy-ui


  • cdn
<script type="module" src="https://unpkg.com/xy-ui/components/xy-form.js"></script>
<!--或者-->
<script type="module">
    import 'https://unpkg.com/xy-ui/components/xy-form.js'
</script>


  • 或者直接从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>


渲染如下

image.png

首先输入框均设置了required属性,表示必填项,如果不输入在submit时会提示以下信息

image.png

其次,密码框规定了minlength属性,表示最小字符长度,如果不满足格式,会提示以下信息

image.png

当全部满足要求才能进行提交,可在控制台查看提交的表单数据,格式为formData,可转换json。

image.png


自定义表单


自定义表单提交


当表单带有action属性时,回车键可以触发表单提交,如果包含htmltype="submit"的按钮时,点击该按钮可以触发表单提交。


如果想手动通过ajax提交,可以去除action属性,这样就不会触发默认表单提交效果了。


可通过form.formdata获取表单的值。

image.png

sumbitBtn.onclick = function(){
    fetch('/login', {
        method: 'POST',
        body: form.formdata,
    })
    .then(function(data){
        //
    })
}


自定义表单验证


默认情况下,如果验证失败,表单则不会提交。


可以通过表单的form.checkValidity()方法手动校验所有表单元素,也可通过form.validity获取验证合法性。

image.png

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-inputxy-checkboxxy-radio等等均未提及,可参考文档,有了这些组件,可以很轻松的完成表单校验,如文章开所示。


xy-form是一个原生web组件,不限制于框架,可直接使用。如果想使用其他类似的组件,可关注xy-ui,汇集了其他各类常见交互组件,欢迎star~。

image.png

相关文章
|
1月前
ractive.js联系表单动画效果源码
一款ractive.js联系表单动画效果,很有创意的发送邮件、联系内容等表单,基于ractive.js实现的动画效果,以发送信件的方式。
25 1
|
1月前
|
前端开发 JavaScript 安全
HTML+CSS+JS密码灯登录表单
通过结合使用HTML、CSS和JavaScript,我们创建了一个带有密码强度指示器的登录表单。这不仅提高了用户体验,还帮助用户创建更安全的密码。希望本文的详细介绍和代码示例能帮助您在实际项目中实现类似功能,提升网站的安全性和用户友好性。
48 3
|
1月前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
45 0
|
2月前
|
JavaScript 数据安全/隐私保护
2024了,你会使用原生js批量获取表单数据吗
2024了,你会使用原生js批量获取表单数据吗
59 4
|
2月前
|
JavaScript 前端开发 API
探索Vue.js 3的组合式API:一种更灵活的组件状态管理方式
【10月更文挑战第5天】探索Vue.js 3的组合式API:一种更灵活的组件状态管理方式
|
2月前
|
JavaScript 前端开发 数据安全/隐私保护
前端技术分享:使用Vue.js构建响应式表单
【10月更文挑战第1天】前端技术分享:使用Vue.js构建响应式表单
|
3月前
|
移动开发 JavaScript 前端开发
js之操作表单 | 12-4
js之操作表单 | 12-4
|
3月前
|
移动开发 前端开发 JavaScript
JavaScript 表单
JavaScript 表单
30 9
|
3月前
|
移动开发 前端开发 JavaScript
原生JavaScript+canvas实现五子棋游戏_值得一看
本文介绍了如何使用原生JavaScript和HTML5的Canvas API实现五子棋游戏,包括棋盘的绘制、棋子的生成和落子、以及判断胜负的逻辑,提供了详细的代码和注释。
52 0
原生JavaScript+canvas实现五子棋游戏_值得一看
|
3月前
|
JavaScript 前端开发 API
JavaScript 验证 API
JavaScript 验证 API
38 2