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. redhat6.5 安装oracle11G

    一.安装依赖包 下面是Oracle数据库需要依赖的软件,依次执行下面命令,不存在则安装. yum install binutils yum install elfutils-libelf yum in ...

  2. ubuntu16.04配置记录

    新开一篇随笔记录ubuntu16.04配置中遇到的坑 1.安装Bumblebee(大黄蜂) Bumblebee是一款双显卡驱动,可以关闭独显,有效控制笔记本发热 第一步:安装我们的主角Bumblebe ...

  3. JavaWeb_(request和response)用户登录注册模板_基础版

    用户登录注册模板进阶版 传送门 用户登录注册模板基础版 登录:当用户登录成功时,跳转到personCenter.jsp,当用户登录失败时,跳转到login.jsp并给出提示 注册:当用户注册成功时,跳 ...

  4. win7,win10 系统上搭建testlink1.9.18环境实操步骤

    Windows7,10系统上安装TestLink1.9.18(基于xampp) 写于:2018.11.28 二次排版微调:2019.01.01 如遇本文资料缺失,可点击百度网盘查看原始资料. 链接:h ...

  5. C++入门经典-例5.1-输出变量的指针

    1:代码如下: // 5.1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  6. TreeMap元素必须实现Comparable接口

    纠正一下,TreeMap实现一定顺序是通过Comparable接口的,而他实现元素不重复也是完全通过compareTo,而不是hashCode和equals,因为debug不会走到hashCode和e ...

  7. [Java]分解算术表达式二

    源码: package com.hy; import java.io.BufferedReader; import java.io.IOException; import java.io.InputS ...

  8. 说说 Activity、Intent、Service 是什么关系

    他们都是 Android 开发中使用频率最高的类.其中 Activity 和 Service 都是 Android 四大组件之一.他俩都是Context 类的子类 ContextWrapper 的子类 ...

  9. python 2.7 error: Microsoft Visual C++ 9.0 is required

    参考:https://stackoverflow.com/questions/43645519/microsoft-visual-c-9-0-is-required 解决方法: 下载并安装Micros ...

  10. 配置pip镜像源(转)

    使用pip安装python扩展时,如若没有配置国内镜像源,在未翻墙的情况下,其下载速度将会特别缓慢.因此,有些时候我们必须使用国内镜像源,来解决pip下载安装速度慢的问题,比较常用的国内镜像包括: 阿 ...