layui里面layer弹窗渲染layerdate,时间控件不出现,闪现问题,F12才出来

直接说解决办法吧!

排除法,首先看type类型

首先说第一种

layer.open({
  type: 1,
  content: $('#id') //这里content是一个DOM,注意:最好该元素要存放在body最外层,否则可能被其它的相对元素所影响
});

这种基本不会出现高度问题,一般出现这种情况就是冒泡,虽然都知道冒泡

但是这里也是可能会遇到2种情况的,

1:通过按钮或者页面多个相同的class来渲染的

$('#test1').on('click', function(e){ //假设 test1 是一个按钮
  laydate.render({
    elem: '#test'
    ,show: true //直接显示
    ,closeStop: '#test1' //这里代表的意思是:点击 test1 所在元素阻止关闭事件冒泡。如果不设定,则无法弹出控件
  });
});

2:通过input来渲染的出现不出来,偶尔闪现,F12反正无缘无辜不知道点了什么出来的

这里就要注意 

layer.open({content:"内容"});

举例:

var html='<form class="layui-form"><input type="input" class="layui-input"/><input type="input" class="layui-input"/></form>';
var contenthtml=$(html);
 contenthtml.find('input').eq(0).attr('value',"123456");
 contenthtml.find('input').eq(1).attr('id',"aaa");
layer.open({
    title:'设备安装配置信息',
    area: ['50%', '530px'],
    content: contenthtml.prop("outerHTML"),//这里content是一个普通的String
    success: function(layero, index){
        layui.laydate.render({
            elem:'#aaa'//指定元素
        });
    }
});

这上面的实例肯定会出现渲染不出来(layer默认type:1),我们都知道第一反应冒泡。但是我页面只有一个id=”aaa“的呀

这里会出现这个问题因为你已经把html变量变为了dom结果在layer弹窗在增加一次dom

解决办法就是layeropen之前content里面内容是不能经过dom操作的

上面修改后正确代码

var html='<form class="layui-form"><input type="input" value="'+123456+'" class="layui-input"/>\n';

html+='<input type="input" id="aaa" class="layui-input"/></form>';
layer.open({
    title:'设备安装配置信息',
    area: ['50%', '530px'],
    content: html,
    success: function(layero, index){
        layui.laydate.render({
            elem:'#aaa'//指定元素
        });
    }
});

第二种:

type:2的就是iframe的弹窗,这种我几乎没用过,但是还是要说一下的,这种几乎没什么问题,遇到一般也是高度问题,iframe高度不是自适应高度在iframe上面加上

这种一般无非就是layerdate和弹窗刚好覆盖在input上

onload="this.height=this.contentWindow.document.documentElement.scrollHeight"

 

要实现Vue表单弹窗服务端渲染,需要注意以下几点: 1.使用Vue SSR(服务端渲染)来渲染模板,这样可以在服务端将Vue组件渲染成HTML字符串,然后将其发送到浏览器。 2.在应用程序中使用Vue的客户端和服务端代码,并确保组件在两个环境中都可以运行。这意味着您需要将所有组件的依赖项作为外部资源加载到HTML中。 3.在服务端使用Node.js来构建应用程序,使用Express或Koa等框架来处理HTTP请求和响应。 4.在客户端使用Vue.js来处理用户交互和动态渲染。 下面是一个简单的示例代码,以Vue.js和Node.js为例: 首先,我们需要安装Vue.js和Vue Server Renderer: ``` npm install vue vue-server-renderer --save ``` 接下来,我们需要创建一个Vue组件来表示表单弹窗: ```vue <template> <div class="dialog-box" v-if="show"> <div class="dialog"> <h3>{{ title }}</h3> <form @submit.prevent="submit"> <div class="form-group"> <label for="username">Username</label> <input type="text" id="username" v-model="username"> </div> <div class="form-group"> <label for="password">Password</label> <input type="password" id="password" v-model="password"> </div> <button type="submit">Submit</button> </form> </div> </div> </template> <script> export default { data() { return { show: false, title: 'Login', username: '', password: '' } }, methods: { submit() { // handle form submission } } } </script> ``` 然后,我们需要创建一个服务器端渲染的入口文件: ```js const Vue = require('vue') const serverRenderer = require('vue-server-renderer').createRenderer() const express = require('express') const app = express() const App = require('./App.vue') app.get('*', (req, res) => { const vm = new Vue({ render: h => h(App) }) serverRenderer.renderToString(vm, (err, html) => { if (err) { res.status(500).send('Server Error') } else { res.send(` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vue Form Dialog SSR</title> <script src="/bundle.js"></script> </head> <body> ${html} </body> </html> `) } }) }) app.listen(3000, () => { console.log(`Server started at http://localhost:3000`) }) ``` 在这个文件中,我们首先引入了Vue、Vue Server Renderer和Express。然后,我们创建了一个Express应用程序,并为所有路由配置了一个基本的处理程序。在处理程序中,我们创建了一个Vue实例,并使用Vue Server Renderer将其渲染为HTML字符串。最后,我们将HTML字符串包装在一个完整的HTML模板中,其中包含对我们应用程序的客户端代码的引用。 最后,我们需要创建一个客户端入口文件,该文件将启动Vue应用程序并挂载它到DOM中: ```js import Vue from 'vue' import App from './App.vue' new Vue({ render: h => h(App) }).$mount('#app') ``` 这里的代码很简单,我们只是从Vue导入Vue和我们的App组件,并创建了一个Vue实例,并使用它将我们的应用程序挂载到DOM中。 现在,我们可以使用以下命令来启动我们的应用程序: ``` node server.js ``` 这将启动我们的应用程序,并将其监听在端口3000上。要在浏览器中查看它,请导航到http://localhost:3000。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值