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时间函数基础介绍
Mar 28 Javascript
jQuery获取当前对象标签名称的方法
Feb 07 Javascript
JavaScript中创建对象和继承示例解读
Feb 12 Javascript
最短的IE判断var ie=!-[1,]分析
May 28 Javascript
JavaScript开发人员的10个关键习惯小结
Dec 05 Javascript
jQuery插件实现图片轮播特效
Jun 16 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
Nov 05 Javascript
js判断一个字符串是以某个字符串开头的简单实例
Dec 27 Javascript
js仿淘宝商品放大预览功能
Mar 15 Javascript
JavaScript 巧学巧用
May 23 Javascript
vue 过滤器filter实例详解
Mar 14 Javascript
什么时候不能在 Node.js 中使用 Lock Files
Jun 24 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
php中目录,文件操作详谈
2007/03/19 PHP
php面向对象全攻略 (三)特殊的引用“$this”的使用
2009/09/30 PHP
Thinkphp中的volist标签用法简介
2014/06/18 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
this[] 指的是什么内容 讨论
2007/03/24 Javascript
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
JavaScript之appendChild、insertBefore和insertAfter使用说明
2010/12/30 Javascript
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
IE8中动态创建script标签onload无效的解决方法
2014/12/22 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
2017/04/22 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
python编写的最短路径算法
2015/03/25 Python
Python中的random()方法的使用介绍
2015/05/15 Python
pandas带有重复索引操作方法
2018/06/08 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
用pandas划分数据集实现训练集和测试集
2020/07/20 Python
使用Django的JsonResponse返回数据的实现
2021/01/15 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
.NET remoting的两种通道是什么
2016/05/31 面试题
小学生感恩父母演讲稿
2014/08/28 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
公司捐书倡议书
2015/04/27 职场文书
公诉意见书范文
2015/06/05 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书
python爬取新闻门户网站的示例
2021/04/25 Python
Redis如何实现分布式锁
2021/08/23 Redis
Vue全局事件总线你了解吗
2022/02/24 Vue.js