锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

VUE+Layui 输入框、下拉选择框、复选框、开关、文本域 数据回显

时间:2022-09-10 05:00:00 1000w100rj电阻

  • 一、说明
  • 二、效果
  • 三、代码
  • 如果失败了

一、说明

用了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>  <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">
         
        <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> 
         
        <script src="https://www.layuicdn.com/layui/layui.js" v="2.5.6" e="layui.all">
        
        script> 
         
        <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
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章