semantic-ui 的表单使用

最近找了一款ui库,jquery可以使用的。可以进行个性化定制,感觉还不错。

现状

简单阐述下该ui的现状吧,目前止步于2.4的版本,github商讨了一波。大致是死掉了,很久没有再接着更新了,留下了一些问题。接着便有人基于该库进行继续迭代link,赞一个

基于上述说法,个人推荐直接使用网友接着开发的,之前的功能保留,而且还在持续添加新的组件。同时历史遗留的bug也得以解决

form使用 demo

  • form表单使用,一般涉及到如下几个

    • 校验规则
    • 你有我无
    • 跳转到指定的错误位置
    • 获取值
    • 同一个意思涉及到多种表单类型(eg: 有其他时,输入,于是上面的单选框就不用进行校验)

现针对上面的一一进行处理

  • 校验规则

      $('.ui.form').form({
    on: 'blur',
    fields: {}
    })

    目前有两种显示错误方式

    • 当前表单下方,需要添加
        <div class="ui error message"></div>
    • 设置inline: true
    • 校验规则两种写法

      • 简单方法
          fields: {
        name : 'empty',
        skills : ['minCount[2]', 'empty'],
        terms : 'checked'
        }
      • 复杂点【可以进行自定义】
          fields: {
        name: {
        identifier: 'name',
        rules: [
        {
        type : 'empty',
        prompt : 'Please enter your name'
        }
        ]
        },
        skills: {
        identifier: 'skills',
        rules: [
        {
        type : 'minCount[2]',
        prompt : 'Please select at least two skills'
        }
        ]
        },
        terms: {
        identifier: 'terms',
        rules: [
        {
        type : 'checked',
        prompt : 'You must agree to the terms and conditions'
        }
        ]
        }
        }
  • 你有我无【动态添加校验规则】

    目前直接通过值的判断,来进行控制是否显示

      $('#input').on('input', (e) => {
    const value = e.target.value
    if (value) {
    $('.ui.form').form('remove rule', 'language')
    /**
    * 有点版本还需要手动去清除样式
    * 有些可以使用 validate field 进行单独校验即可
    */
    } else {
    $('.ui.form').form('add rule', 'language', {
    rules: [
    {
    type: 'checked',
    prompt: '选择一门你喜欢的语言'
    }
    ]
    })
    $('.ui.form').form('validate field', 'language')
    }
    })
  • 跳转到指定的错误位置

    由于使用了该库的样式,导致获取错误信息的位置scrollTop0,主要原因是对html设置了height: 100%

    因而需要尝试其他方式

    onFailure中进行处理

      setTimeout(function() {
    // 获取第一个错误位置
    var res = $('.field.error')[0].getBoundingClientRect()
    var top = document.scrollingElement.scrollTop + res.y
    // 此处有一个疑惑点 为何需要 -120 目前没有深入研究
    $(document.scrollingElement).scrollTop(top - 120)
    }, 16)
  • 获取值

    一般的都可以通过在 onSuccess中的fields可以拿到所有name的值,但是针对checkbox多选时,一直拿到的是最后一个值,按道理是数组,多个值才对,因而需要注意其使用规范

    html

      <input type="checkbox" name="books[]" value="自传">

    校验

      books: {
    identifier: 'books[]',
    rules: [{
    type: 'checked',
    prompt: '选择喜欢的书籍'
    }]
    }

    之后通过上面的fields便可以拿到值,只是需要过滤一下false情况即可

  • 同一个意思涉及到多种表单类型

    类似你有我无的处理方式,只是在获取值时,需要有一个侧重点,是否是输入了其他,上面的单选框就失效,还是怎么的。反正两个值都可以拿到,只是在传给后台时,稍微处理一下即可

细节处理

针对 type=radiotype=checkbox 校验,若是需要显示错误信息,目前尽可能使用第二种方式,不然提示信息会默认选择第一个作为错误信息显示,这样明显有问题,只有采用第二种才可以进行自定义错误信息显示

总结

  • code
  • 版本不同会有细微区别(特别是checkbox,校验时,明明选择了,还是变红,需要更换版本)link

semantic-ui的表单使用的更多相关文章

  1. vue + element ui 阻止表单输入框回车刷新页面

    问题 在 vue+element ui 中只有一个输入框(el-input)的情况下,回车会提交表单. 解决方案 在 el-form 上加上 @submit.native.prevent 这个则会阻止 ...

  2. element ui form表单清空规则

    公司项目重构,经过商定使用element ui.在重构项目的时候发现一下element ui上很蛋疼的东西. 例如,这个form表单就是一个.趁着在高铁上没事,把想写的东西写一下. 先说一下eleme ...

  3. Easy UI form表单提交 IE浏览器不执行success ,以及 datagrid 展示过慢

    最近在做一个Easy ui的项目 发现了一些问题,在这里总结下 1.表单提交,后端代码 public ActionResult Save(Request model) { ResultInfo _in ...

  4. vue+element ui 重置表单

    <el-dialog :title="addForm.title" :visible.sync="dialogFormVisible" width=&qu ...

  5. element ui FORM表单

    form表单 Form-Item Slot [label] 旧版语法 <el-form-item label="活动名称" prop="name"> ...

  6. easy ui 给表单元素赋值input,combobox,numberbox

    ①给input控件 class="easyui-textbox" <input class="easyui-textbox" data-options=& ...

  7. 20151124 Jquery UI form 表单变成dialog

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. UI自动化测试表单重要代码

    public class frame { public static void main(String[] args) { // TODO Auto-generated method stub Sys ...

  9. Ionic4.x 中的 UI 组件(UI Components)表单相关组件

    1.ion-input 单行文本框 2.ion-toggle 开关 3.ion-radio-group.ion-radio 单选按钮组 4.ion-checkbox 多选按钮组 5.ion-selec ...

  10. semantic-ui 表单

    1.定义表单 先看一个基础的表单,再讲解一下: <form class="ui form" method="post" action="&quo ...

随机推荐

  1. Linux命令-文件管理(二)

    Linux命令-文件管理(二) Linux gitview命令 Linux gitview命令用于观看文件的内容,它会同时显示十六进制和ASCII格式的字码. 语法:gitview [-bchilv] ...

  2. Thread的setDaemon(true)方法的作用

    定义:守护线程--也称“服务线程”,在没有用户线程可服务时会自动离开.优先级:守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务.设置:通过setDaemon(true)来设置线程为“守护线 ...

  3. AtCoder4351 Median of Medians 二分, 树状数组

    题目大意 定义一个从小到大的数列的中位数为第 $ \frac{n}{2}+1 $ 项.求一个序列的所有连续子序列的中位数的中位数. $ (n \leqslant 100000)$ 问题分析 由于\(n ...

  4. AtCoder AGC030B Tree Burning

    题目链接 https://atcoder.jp/contests/agc030/tasks/agc030_b 题解 细节好题.. 首先假设第一步往右走,那么可以发现当拐弯的次数一定时路径是唯一的 于是 ...

  5. BZOJ 1488 Luogu P4727 [HNOI2009]图的同构 (Burnside引理、组合计数)

    题目链接 (Luogu) https://www.luogu.org/problem/P4727 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.ph ...

  6. TCP连接数配置

    一般的设置规则为: 系统最大文件数>可用端口>用户最大文件数 sysctl -a | grep file-max cat /proc/sys/fs/file-max 这表明这台Linux系 ...

  7. docker容器的学习

    什么是docker   Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2.0 授权协议开源 ...

  8. Zookeeper(五)持久化快照

    Zookeeper(五)持久化快照 用途 快照文件是指定时间间隔对zookeeper服务器上的节点数据的序列化后备份到磁盘中,快照文件不一定是最新的 如果zk集群挂了,可能会用到它来复原 基本术语 D ...

  9. SpringBoot&Dubbo&Zookeeper远程调用项目搭建

    序言 Dubbo一款分布式服务框架,作为阿里巴巴SOA服务化治理方案的核心框架,通过高性能和透明化的RPC实现服务的远程调用,对服务的负载均衡以及项目的耦合性提供很强的解决方式;具体Dubbo的介绍和 ...

  10. What is the !! (not not) operator in JavaScript?

    What is the !! (not not) operator in JavaScript? 解答1 Coerces强制 oObject to boolean. If it was falsey ...