有时候我们在js中进行下拉框的动态初始化,或者我们做联动下拉的时候发现已经查询出数据但是下拉框并没有展示出来,这个时候就需要我们在初始化完成之后或者联动数据查询之后对表单进行重新渲染,这样就能加载出来了。
layui.use('form', function(){
// 高版本建议把括号去掉,有的低版本,需要加()
var form = layui.form;
// 也可以单单初始化下拉框form.render('select');
form.render();
});
可以将方法都封装在一个变量中,调用的时候更方便,例如要调用方法直接写
commonFuns.renderForm();
// 封装方法
var commonFuns = {
//重新渲染表单
renderForm : function(){
layui.use('form', function(){
//高版本建议把括号去掉,有的低版本,需要加()
var form = layui.form;
form.render();
});
}
};
原因是layui内置的Form模块为全自动渲染,她将原本普通的诸如select、checkbox、radio等元素重置为你所看到的模样,只要你的页面对应js有像以下定义即可渲染出来
layui.use('form', function(){
var form = layui.form;
});
针对下拉框的响应事件onchange,在layui中不在select元素直接添加onchange事件,而是在select元素添加一个lay-filter值
然后在对应的js中对该下拉框元素进行监听
// 对表单元素操作比如监听下拉框事件
layui.use(['form'], function(){
var form = layui.form;
form.on('select(industryType)', function(data){
// 下拉响应事件,和原始的onchange一个效果
commonFuns.industryTypeChange();
// 重新渲染表单
commonFuns.renderForm();
});
});
假设我们需要做一个新增页面,通过点击一个新增按钮弹出一个新页面,在新的页面进行表单填写然后保存,我们需要的效果是保存成功后会关闭当前新页面然后重新加载父页面。
layer.alert("新增成功!",function(){
// 刷新父页面
window.parent.location.reload();
// 获取当前弹出层的层级
var index = parent.layer.getFrameIndex(window.name);
// 关闭弹出层
parent.layer.close(index);
});
在页面处理中经常碰到需要弹出一个页面,比如修改页面或者查看页面等,这时候可以用layer.open进行操作,如果我们用layer.open打开的是一个iframe页面,我们该如何将父页面的一些参数传递过去,有2种方法,第一种直接在url地址后面传参,类似于xxx.action?name=xxx,第二种则是在父页面的js写一个对象然后给对象赋值
//监听工具条
table.on('tool(viewGrid)', function(obj){
var selectData = obj.data;
if(obj.event === 'btnView'){
// 注意下面的param不要在此处加var,否则就限定范围了,可以直接就按照下面写
param = {
selectData : selectData,
type : "view"
};
// 页面层
layer.open({
type: 2,
title : '查看详情',
area: ['1000px', '650px'],
content: url
});
}
});
在iframe的子页面中可以按照以下方式取出传递的参数
在layui中让表单元素处于禁止状态,加上disabled即可,但是为了效果更加明显,我们可以在元素上加上一个内置class样式名称layui-disabled,加上这个样式会有禁止的图标出现
要获取表单元素的值的集合,需要注意以下几点
第一要在表单提交的按钮元素上加上lay-submit以及lay-filter
第二在表单的各个元素都必须要有name元素,不然获取不到该元素的值
表单监听事件得到表单元素值集合
btnSave : function(){
// 监听表单提交
form.on('submit(btnSave)', function(data){
var formVal = data.field;
console.log(formVal);
});
}
以上submit后面括号中的值对应前面按钮中的lay-filter中的值
在表格中针对某一行,我们需要对该行进行操作,比如查看或者修改,这个时候我们需要固定一列作为操作列来放置按钮
首先在jsp页面的中写入按钮,一般选择放在body结束前,在script中写一个id