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

news/2024/10/21 10:16:09/

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

一、说明

用了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

http://www.ppmy.cn/news/342648.html

相关文章

【每天一个java设计模式(六)】 - 适配器模式

当某种业务功能已经实现&#xff0c;但它们与当前系统的接口不兼容&#xff0c;如果重新开发成本又很高&#xff0c;这时用适配器模式能很好地解决这些问题。 适配器模式是作为两个不兼容的接口之间的桥梁&#xff0c;属于结构型模式&#xff0c;它结合了两个独立接口的功能。…

HTML期末大作业 ~ 马尔代夫旅游网页设计作业成品 ~ HTML+CSS+JS网页设计期末课程大作业 ~ web前端开发技术 ~ web课程设计网页规划与设计

HTML期末大作业 ~ 大学生旅游官网网页设计作业成品 ~ HTMLCSSJS网页设计期末课程大作业 ~ web前端开发技术 ~ web课程设计网页规划与设计~ 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大&#xff1f;HTML网页作业无从下手&#xff1f;网页要求的总数量太多&…

深度学习入门:一句话告诉你什么是神经网络(CNN,RNN,DNN)

神经网络技术起源于上世纪五、六十年代&#xff0c;当时叫感知机&#xff08;perceptron&#xff09;&#xff0c;拥有输入层、输出层和一个隐含层。输入的特征向量通过隐含层变换达到输出层&#xff0c;在输出层得到分类结果。早期感知机的推动者是Rosenblatt。&#xff08;扯…

乐phone C101、W100、 W101、 S1 刷机一站式解决

注意&#xff1a; 1.本教程刷机过程需要在Windows操作系统环境下进行。 2.本教程只针对乐phone C101、W100、 W101、 S1。 3.请确认自己的机型下载对应的刷机文件。 4.刷机有风险&#xff0c;务必要小心&#xff1b;因刷机造成的任何问题&#xff0c;本人不承担任何责任。 5.因…

SA实战 ·《SpringCloud Alibaba实战》第10章-服务容错:项目整合Sentinel实现限流与容错

作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章汇总:https://binghe.gitcode.host/md/all/all.html 大家好,我是冰河~~ 一不小心《SpringCloud Alibaba实战》专栏都更新到第10章了,再不上车就跟不上了,小伙伴们快跟上啊! 注意:本项目完…

手机通话录音删除了怎么恢复

手机是我们日常生活中必不可少的工具。我们常常使用手机进行通话&#xff0c;因此手机通话录音功能也变得越来越重要。但是有时&#xff0c;由于诸如误操作、系统故障或其他问题&#xff0c;手机中的通话录音可能会被误删。那么&#xff0c;如果发生这种情况&#xff0c;我们该…

Mysql服务器断电,数据库表打不开解决方案

现象&#xff1a;服务器突然断电&#xff0c;数据库重启后现场服务启动报错&#xff0c;提示某某表找不到 doesn’t exist&#xff0c;命令行链接数据库后&#xff0c;使用show databases查看数据库存在&#xff0c;进一步use后&#xff0c;show tables所有的表也存在&#xff…