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知识库 -> LayUI:做页面窗体的参数传递时遇到的坑 -> 正文阅读

[JavaScript知识库]LayUI:做页面窗体的参数传递时遇到的坑

  写完一个计算机信息录入的页面后,用户开始使用了。

  为了方便用户快捷录入,用户如果选择某一类型的计算机比如联想ThinkCentre M7131z的计算机,那么程序应该将这个型号计算机的出厂类型、生产日期、生产商、CPU信息、显卡信息、声卡信息、内存大小、固态硬盘大小、机械硬盘大小等一起提取出来并填入。如果信息有变化(升级或者维修更换),可以修改。

  想着很简单,以为和C#一样可以快快地实现,昨天晚上给用户说很快就可以让他们用上这个功能。他们觉得挺好,为他们着想了,这样他们省事多了。

  结果整个白天都在折腾这个破玩意,唉!悲催,苦逼的低端!

踩坑⑴

  建完字典表,打算使用数据测试一下,就在MS SQL Server里直接编辑了,在录入计算机型号的时候,图省事,直接在网页里拷贝了型号名称,黏贴到MS SQL Server的数据库表的编辑框中,结果数据死活不出来,仙人板板,明明数据都是对的,可就是不出结果,程序也不报错,折腾了半个多小时,后来直接提取原字段内容才发现,复制网页内容时有回车键,可是在MS SQL Server的数据库表的编辑框中看不见。

踩坑⑵

  写程序我大部分都是复制与黏贴,把写过的代码复制过来,略微改一下,尽快完成工作,改进和提高是后面的事情。

  我做过父窗体与子窗体的参数传递,比如在做数据修改的时候,需要将原始数据进行保留,在提交修改的时候,与原数据一一进行对比,改动了才提交修改,没有改动的就不用提交修改。

  在《LayUI⑵:下拉列表的常用操作》中,我记录了这样的做法,是可以正常使用的。

  今天也是这样做,结果初始化不成功。

  想法:用户点击某一个标签,弹出相应的窗体选择框,从数据库中提取相应的数值进行选择。

  我还是像以前那样,在子页面中建一个初始化函数init(selectName),然后在父页面中调用这个函数进行参数传递,可是结果却不出来,参数传递是正常的,跟踪才发现原来这个函数是在最后才执行,所以导致了从数据库提取不到正确的参数。

  即在子页面中声明了变量,比如:

	let selectName;
	function init(src){
		selectName=src;
	}

   你在父页面里调用:

    window["layui-layer-iframe" + index].init('出厂类型');

  参数是传递进去了,可是后面的代码是先于这个函数执行的,也就没有得到selectName的传递值。

  也不想换其他的参数传递方法了,就让从数据库提取数据延迟500ms,这样数据才提取成功。

踩坑⑶

  界面想做得略微好看一点,就想做下拉框,没找到合适的LayUI下拉框,想用Input框和下拉框组合,有点麻烦,就想在录入框旁边放个按钮,结果界面乱了,无奈,只能使用标签点击,就是标签点击后出现一个窗口让用户选择,我以为还有List组件,没发现,时间紧就使用了表格。

  后面仔细看一下拉框,是否有替换的方法。

  实现效果:

   蓝色标签可以响应点击事件。

  点击【出厂类型】,出现选择框。

  选择?ThinkCentre M720t-NO56,点击【确定】进行数据填充。

?  父页面代码:

		//给标签出厂类型添加监听事件
		var lbl_CCLX=document.getElementById("lbl_CCLX");	
		lbl_CCLX.addEventListener('click',function(e){
				var index =layer.open({
					type: 2, title: '选择-->出厂类型'
					, closeBtn: 0
					, area: ['600x', '500px']
					, shade: 0.3
					, id: 'Win_CCLX1'
					// , btn: ['关闭']
					, btnAlign: 'c'
					, moveType: 1
					, content: 'EisGetSelectSingleValue.html'
					, success: function (layero,index) {
							var iframe = layero.find('iframe')[0].contentWindow; //得到iframe页的窗口对象
							iframe.layui.form.render(); //页面渲染																				
						    window["layui-layer-iframe" + index].init('出厂类型');														
					}
				});		
		})	  

  子页面代码:

  初始化:

	function init(src){
		document.getElementById("selectName").value=src;
	}

  页面的表格数据延迟加载:

		setTimeout(function(){
			table.render({
				elem: '#currentTableId',
				url: 'EisGetSelectSingleValue.php',
				cols: [[
					{type: "radio", width: 40},
					{field: 'C02', width: 200, align:'left',title: '选项列表', sort: true}
				]],
				method:'POST',
				where:{"C01":document.getElementById("selectName").value},
				page: false,
				skin: 'line',
				done:function(data){
					$(this.elem).next().find(".layui-table-header").attr('class',"layui-hide layui-table-header");
				}
			});			
			
		},500);

  监听响应,根据不同参数提取相应的数据进行填充。

        form.on('submit(saveBtn)', function (data) {
			if(document.getElementById("selectName").value=='出厂类型'){
					//出厂类型
					window.parent.layui.jquery('#C04').val(selectItem);
					//CPU
					$.ajax({
						url:'EisGetUniqueValue.php',
						data:{"C01":selectItem,"C02":"CPU"},
						type:'POST',
						dataType: 'text',
						async:false,
						success:function (data) {
							window.parent.layui.jquery('#C06').val(data);							
						}
					});					
					
					//显卡
					$.ajax({
						url:'EisGetUniqueValue.php',
						data:{"C01":selectItem,"C02":"显卡"},
						type:'POST',
						dataType: 'text',						
						async:false,
						success:function (data) {
							window.parent.layui.jquery('#C10').val(data);							
						}
					});										
					//声卡
					$.ajax({
						url:'EisGetUniqueValue.php',
						data:{"C01":selectItem,"C02":"声卡"},
						type:'POST',
						dataType: 'text',						
						async:false,
						success:function (data) {
							window.parent.layui.jquery('#C11').val(data);							
						}
					});															
					//内存大小
					$.ajax({
						url:'EisGetUniqueValue.php',
						data:{"C01":selectItem,"C02":"内存"},
						type:'POST',
						dataType: 'text',						
						async:false,
						success:function (data) {
							window.parent.layui.jquery('#C07').val(parseInt(data));							
						}
					});																				
					//固态硬盘大小
					$.ajax({
						url:'EisGetUniqueValue.php',
						data:{"C01":selectItem,"C02":"固态硬盘"},
						type:'POST',
						dataType: 'text',						
						async:false,
						success:function (data) {
							window.parent.layui.jquery('#C28').val(parseInt(data));							
						}
					});																									
					//机械硬盘大小
					$.ajax({
						url:'EisGetUniqueValue.php',
						data:{"C01":selectItem,"C02":"机械硬盘"},
						type:'POST',
						dataType: 'text',						
						async:false,
						success:function (data) {
							window.parent.layui.jquery('#C08').val(parseInt(data));							
						}
					});																														
					//生产日期
					$.ajax({
						url:'EisGetUniqueValue.php',
						data:{"C01":selectItem,"C02":"生产日期"},
						type:'POST',
						dataType: 'text',						
						async:false,
						success:function (data) {
							window.parent.layui.jquery('#C14').val(data);							
							window.parent.layui.form.render();							
						}
					});																																			
					//生产商
					$.ajax({
						url:'EisGetUniqueValue.php',
						data:{"C01":selectItem,"C02":"生产商"},
						type:'POST',
						dataType: 'text',						
						async:false,
						success:function (data) {
							window.parent.layui.jquery('#C15').val(data);							
							window.parent.layui.form.render();							
						}
					});																																								
			}

			if(document.getElementById("selectName").value=='CPU'){
					window.parent.layui.jquery('#C06').val(selectItem);
			}

			if(document.getElementById("selectName").value=='显卡'){
					window.parent.layui.jquery('#C10').val(selectItem);
			}

			if(document.getElementById("selectName").value=='声卡'){
					window.parent.layui.jquery('#C11').val(selectItem);
			}

			var iframeIndex = parent.layer.getFrameIndex(window.name);
			parent.layer.close(iframeIndex);			
		})

  PHP代码:

<?php
require 'DawnEisLinkConfig.php';
$C01=!empty($_POST['C01']) ? $_POST['C01'] : '';
$C02=!empty($_POST['C02']) ? $_POST['C02'] : '';

$sql = "select C03 from EisDict where C02='$C02' and C01='$C01'";
$res = $EisConn->query($sql);
$rows=$res->fetchAll(PDO::FETCH_ASSOC);
$return=$rows[0]['C03'];
echo $return;
?>

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

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:05:41-

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