layer实现弹窗提交信息


Posted in Javascript onDecember 12, 2016

layer是非常好用的弹窗插件,具体参见官方文档
点击这里进入。官方有很多示例,使用方法也非常简单,引入官方下载的css和js就可以了。但是有时候,弹窗提醒并不能满足我们的所有要求。例如,在奖品界面,希望点击“编辑奖品”的时候,能弹出对话框让我们来填写信息,如下图所示:

layer实现弹窗提交信息

如何用简洁美观的 layer 实现这一功能呢?官方并没有给我们提供示例,那就自己动手写吧。下面把代码贴出来。

给“添加奖品”按钮加上单击触发confirmUpdateAward方法

var awards = "";
function confirmUpdateAward(i) {
 layer.open({
  type: 1,
  closeBtn: false,
  shift: 7,
  shadeClose: true,
  content: "<div style='width:350px;'><div style='width:320px;margin-left: 3%;' class='form-group has-feedback'><p>请输入奖项名称</p><input id='awardName' class='form-control' type='text' name='awardName' value='"+awards[i].awName+"'/></div>" +
  "<div style='width:320px;margin-left: 3%;' class='form-group has-feedback'><p>请输入奖项描述</p><input id='awardDescription' class='form-control' type='text' name='awardDescription' value='"+awards[i].awDescription+"'/></div>"+
  "<div style='width:320px;margin-left: 3%;' class='form-group has-feedback'><p>请输入获奖人数</p><input id='awardUserCount' class='form-control' type='number' name='awardUserCount' value='"+awards[i].awUserCount+"'/></div>"+
  "<div style='width:320px;margin-left: 3%;' class='form-group has-feedback'><p>请输入奖项类别</p><input id='awardKind' class='form-control' type='text' name='awardKind' value='"+awards[i].awKind+"'/>" +
  "<button style='margin-top:5%;' type='button' class='btn btn-block btn-success btn-lg' onclick='updateAward("+awards[i].id+")'>提交</button></div>"
 });
}

function updateAward(awardId){

 var awardUserCount = $("#awardUserCount").val();
 if(awardUserCount*1>8888 || awardUserCount*1<1){
  layer.msg('人数必须是1到8888', {
   time: 500, //0.5s后自动关闭
   // btn: ['明白了', '知道了']
  });
 }else{
  var awardName = $("#awardName").val();
  var awardDescription = $("#awardDescription").val();
  var awardKind = $("#awardKind").val();
  $.ajax({
   type: "post",
   url : getContextPath() + "/award/updateAward",
   dataType:'json',
   data: {
    "awardId":awardId,
    "awardName":awardName,
    "awardDescription":awardDescription,
    "awardUserCount":awardUserCount,
    "awardKind":awardKind
   },
   success: function(data){
    var updateSuccess = data.data;
    if(updateSuccess){
     layer.msg('修改成功', {
      time: 500, //0.5s后自动关闭
      // btn: ['明白了', '知道了']
     });
     refreshPage();
    }else{
     layer.msg('修改失败', {
      time: 500, //20s后自动关闭
      // btn: ['明白了', '知道了']
     });
    }
   }
  });
  layer.closeAll();
 }
}

这里有几个需要注意的点:

第一:最后一定要用

layer.closeAll();

否则提交之后弹窗不会自己关闭。

第二:

<input type="number" />

只能保证用户不能输入字母(实际上字母e是可以输入的,会认为是科学技术法),但是通过Json传到后端的依旧是String类型,在做将该信息用

Integer.valueOf();

强转为Integer时候,一定要判断String是否为空,否则会抛异常。

第三:

这里实际上是用到了一个js方法之间调用巧传对象的方法。

当我们从数据库取出若干条奖品记录时,每一条记录都应该有一个“修改”按钮。当我们做修改的时候,用户都希望输入框中显示之前的信息,但是js的方法之间调用的时候,传对象很麻烦,有什么简便的方法呢?

如上面的源码所示,我们只传序号 i 过去。下面这段代码是奖品展示页面的代码,我们可以看到每条记录都有“编辑”按钮。

$(document).ready(function () {
 refreshPage();
});

//定义全局变量
var awards = "";

function refreshPage(){
 $.ajax({
  type: "post",
  url : getContextPath() + "/award/getAllAwards",
  dataType:'json',
  data: {
  },
  success: function(data){
   awards = data.data;
   var awardHtml = "";
   var iLen = awards.length;
   //遍历取出每一条奖品
   for(var i = iLen - 1 ; i >=0 ; i--){
    awardHtml+="<tr><td><span id='span"+i+"' style='cursor:pointer;' onclick='selectAward("+i+","+iLen+")' class='label label-default'>"+"选中"+"</span></td><td>"+awards[i].awName+"</td><td>"+awards[i].awDescription+"</td><td>"+
     awards[i].awUserCount+"</td><td>"+awards[i].awKind+"</td><td><span style='cursor:pointer;' class='label label-info' onclick='confirmUpdateAward("+i+")'>"+"编辑"+"</span></td><td>" +
     "<span class='label label-danger' style='cursor:pointer;' onclick='comfirmDeleteAward("+awards[i].id+")'>"+"删除"+"</span></td></tr>";
   }
   $("#awardTable").html(awardHtml);
  }
 });
}

注意看

onclick='confirmUpdateAward("+i+")'>"+"编辑"+"</span>

这句,我们只传了i到我们最开始写的confirmUpdateAward方法里面,却因为在js中定义了全局变量 awards ,就可以巧妙地在confirmUpdateAward方法中使用awards[i]了。

layer做信息提交遇到的坑都写在这里了,应该再没什么别的问题了,有需要的话可以留言评论。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript中的undefined 与 null 的区别  补充篇
Mar 17 Javascript
防止文件缓存的js代码
Jan 10 Javascript
JS和Jquery获取和修改label的值的示例代码
Jan 15 Javascript
使用Node.js配合Nginx实现高负载网络
Jun 28 Javascript
解决JS无法调用Controller问题的方法
Dec 31 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
Sep 04 Javascript
利用imgareaselect辅助后台实现图片上传裁剪
Mar 02 Javascript
jQuery中layer分页器的使用
Mar 13 Javascript
create-react-app 修改为多入口编译的方法
Aug 01 Javascript
Vue开发实现吸顶效果的示例代码
Aug 21 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
Sep 23 Javascript
详解vue beforeEach 死循环问题解决方法
Feb 25 Javascript
详解Javascript数据类型的转换规则
Dec 12 #Javascript
设置jquery UI 控件的大小方法
Dec 12 #Javascript
JS中检测数据类型的几种方式及优缺点小结
Dec 12 #Javascript
JS仿京东移动端手指拨动切换轮播图效果
Apr 10 #Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
Dec 12 #Javascript
JavaScript利用正则表达式替换字符串中的内容
Dec 12 #Javascript
基于BootstrapValidator的Form表单验证(24)
Dec 12 #Javascript
You might like
GD输出汉字的函数的分析
2006/10/09 PHP
php4的session功能评述(三)
2006/10/09 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
JQuery 操作Javascript对象和数组的工具函数小结
2010/01/22 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
轻松掌握JavaScript状态模式
2016/09/07 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
javascript异步编程的六种方式总结
2019/05/17 Javascript
vue+vant实现商品列表批量倒计时功能
2020/01/13 Javascript
[59:48]LGD vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python单链表实现代码实例
2013/11/21 Python
html2canvas把div保存图片高清图的方法示例
2018/03/05 HTML / CSS
Paradigit比利时电脑卖场:购买笔记本、电脑、平板和外围设备
2016/11/28 全球购物
给儿子的表扬信
2014/01/15 职场文书
快餐公司创业计划书
2014/04/29 职场文书
理发店策划方案
2014/06/05 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
学生党员批评与自我批评
2014/10/15 职场文书
文案策划岗位职责
2015/02/11 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
中秋节晚会开场白
2015/05/29 职场文书
婚庆主持词大全
2015/06/30 职场文书
工作会议简报
2015/07/20 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android
聊聊redis-dump工具安装问题
2022/01/18 Redis
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
2022/04/19 Java/Android
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL