IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> VUE+Layui 输入框、下拉选择框、复选框、开关、文本域 数据回显 -> 正文阅读

[JavaScript知识库]VUE+Layui 输入框、下拉选择框、复选框、开关、文本域 数据回显

一、说明

用了Layui的界面,加上vue的指令:v-modelv-bindv-for

  • 1、注意:开关按钮如果是关闭状态:status字段是不会在表单提交字段中的,打开了就是status:1,所以表单编辑时如果开关由打开变成关闭了,我们的表单数据field需加上status判断,如下:
field.status = field.status ? field.status : 0;
  • 2、点开类型下拉框会发现默认选到最后一个,lay-verify="required"校验失效;所以我们需要设置type的默认值为’’

二、效果

  • 1、默认页面
    在这里插入图片描述

  • 2、点击 [ 回显 ] 页面

在这里插入图片描述

  • 3、点击 [ 提交 ] 页面

在这里插入图片描述

三、代码

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>VUE+Layui 输入框、下拉选择框、复选框、开关、文本域 数据回显</title>
</head>
<!-- 引用线上的layui.css -->
<link rel="stylesheet" type="text/css" href="https://www.layuicdn.com/layui/css/layui.css" v="2.5.6" e="layui"/>
<style>
    .w100 {
        width: 200px;
    }
</style>
<body>
<div class="layui-form" id="vue-mount-element" style="padding: 30px 50px 0 0;">
    <div class="layui-form-item">
        <label class="layui-form-label w100">输入框:标题</label>
        <div class="layui-input-inline">
            <input type="text" lay-verify="required" name="title" :value="info.title" placeholder="请输入标题"
                   autocomplete="off" class="layui-input">
        </div>
    </div>

    <div class="layui-form-item">
        <label class="layui-form-label w100">下拉单选框:类型</label>
        <div class="layui-input-inline">
            <select name="type" lay-verify="required" v-model="info.type">
                <option value="">请选择类型</option>
                <option v-for="item in types" :value="item.id">{{item.name}}</option>
            </select>
        </div>
    </div>

    <div class="layui-form-item">
        <label class="layui-form-label w100">复选框:爱好</label>
        <div class="layui-input-block">
            <input type="checkbox" v-for="item in hobbyList"
                   :disabled="disableHobbyId.length != 0 && (disableHobbyId.indexOf(parseInt(item.id)) != -1)"
                   name="hobby2[]" :value="item.id" :title="item.name" v-model="info.chooseHobbyId" lay-skin="primary"/>
        </div>
    </div>

    <div class="layui-form-item">
        <label class="layui-form-label w100">开关:状态(默认开启)</label>
        <div class="layui-input-inline">
            <input type="checkbox" name="status" value="1" v-model="info.status" lay-skin="switch" lay-text="开启|关闭">
        </div>
    </div>

    <div class="layui-form-item">
        <label class="layui-form-label w100">文本域:描述</label>
        <div class="layui-input-inline">
            <textarea name="desc" placeholder="请输入描述" class="layui-textarea">{{info.desc}}</textarea>
        </div>
    </div>

    <div class="layui-form-item"><!-- layui-hide -->
        <label class="layui-form-label w100">

        </label>
        <div class="layui-input-block">
            <button class="layui-btn layuiadmin-btn-admin" lay-submit>
                提交
            </button>
            <button class="layui-btn layui-btn-warm" id="backButton">
                回显
            </button>
            <button class="layui-btn layui-btn-normal" id="reductionButton">
                还原
            </button>
        </div>
    </div>
</div>
</body>
<!-- 引用线上的layui.js -->
<script src="https://www.layuicdn.com/layui/layui.js" v="2.5.6" e="layui.all"></script>
<!-- 引用线上的vue.js -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    //爱好列表选项
    let hobbyList = [
        {id: 1, name: "爱好1"},
        {id: 2, name: "爱好2"},
        {id: 3, name: "爱好3"},
        {id: 4, name: "爱好4"},
        {id: 5, name: "爱好5"},
        {id: 6, name: "爱好6"},
    ]; //爱好列表
    let disableHobbyId = [2, 4]; //不能选中的爱好(禁用的爱好)

    //类型
    let types = [
        {id: 1, name: "类型1"},
        {id: 2, name: "类型2"},
        {id: 3, name: "类型3"},
    ];

    let info = {}; //后端传过来的值,前端这么写,PHP的话传过来可能是这样[]
    //默认的值:点开类型下拉框会发现默认选到最后一个,lay-verify="required"校验失效;所以我们需要设置type的默认值为'',选择的爱好chooseHobbyId设置为空数组[]
    let defaultInfo = {type: '', status: 1, chooseHobbyId: []}; //默认开启 status: 1,chooseHobbyId:用户选中的爱好

    //PHP传过来是[],以数组的方式判断
    /*if (info.length === 0) {
        info = defaultInfo; //添加,给默认值
    }*/

    //前端是{},判断对象:将json对象转化为json字符串,再判断该字符串是否为"{}"
    if (JSON.stringify(info) == "{}") {
        info = defaultInfo; //添加,给默认值
    }

    //定义回显的数据
    let backInfo = {title: "这是输入的标题", type: 2, status: 0, desc: "这是输入描述的内容", chooseHobbyId: [1, 2]};

    let vueObject = new Vue({
        el: '#vue-mount-element', //vue挂载的元素
        data() {
            return {
                info: info,
                types: types,
                hobbyList: hobbyList,
                disableHobbyId: disableHobbyId
            };
        }
    })

    layui.use(['laydate', 'laypage', 'layer', 'table', 'carousel', 'upload', 'element', 'form'], function () {
        var $ = layui.$
            , laydate = layui.laydate //日期
            , laypage = layui.laypage //分页
            , layer = layui.layer //弹层
            , table = layui.table //表格
            , carousel = layui.carousel //轮播
            , upload = layui.upload //上传
            , form = layui.form //表单
            , element = layui.element; //元素操作 等等...

        /*layer弹出一个示例*/
        // layer.msg('Hello World');

        form.on('submit', function (data) {
            let field = data.field;
            field = JSON.stringify(field);
            layer.alert("表单的内容为:" + field);
        });

        //回显操作
        $('#backButton').click(function () {
            vueObject.info = backInfo; //修改vue对象中data中info的值

            //增加延时效果,回显数据渲染
            setTimeout(function () {
                form.render();
            }, 100);
        });

        //还原操作
        $('#reductionButton').click(function () {
            vueObject.info = defaultInfo; //修改vue对象中data中info的值

            //增加延时效果,回显数据渲染
            setTimeout(function () {
                form.render();
            }, 100);
        });

    });
</script>
</html>

四、如果失效了

  • 请自行寻找其他的 线上 cssjs
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 18:43:07  更:2022-07-20 18:46:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/11 12:35:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码