常见js功能

常见的一些js功能

一、全选、全不选、反选

<input id="checkedButton" type="button" value="全选/取消">
<!--遍历列表中的复选框,需要给class属性-->
 <input type="checkbox" class="check_clazz" id="checkId" value="${record.id}">
/**
 * 全选/全不选
 */ 
$("#checkedButton").click(function () {
 //遍历所有复选框
 $(".check_clazz").each(function () { 
$(this).attr("checked", !$(this).attr("checked")); 
}) })

二、多选时拼接逗号隔开的字符串

1.定义数组的方式

//处理选中的id 
let idList = []; 
$("#checkId:checked").each(function(){ 
    idList.push($(this).val())
 }) 
let ids = idList.join(",")

2.截取字符的方式

 let ids = "";

 $("#checkId:checked").each(function(){
   ids = ","+ids; 
 }) 

 ids = ids.substring(1)

三、二级联动

树形结构/递归结构

数据表设计主要的三个字段:

id 主键(一级/二级/三级/...)

name 名称(一级/二级/三级/...)

parent_id 父级ID(一级默认是0 ,其他级对应上一级的id就是parent_id)

适用于:系统管理-菜单管理;商品分类;多级评论;组织架构;省市区等业务场景

实现思路:

1.查询语句:既能查公司又能查部门,又能根据公司查询对应部门,根据parentId进行查询

2.写接口实现

3.页面:两个下拉框

4.js:遍历公司/部门

         先遍历公司

         根据改变的公司ID,查到对应的部门进行遍历

5.回显:

         第一种方式:

                   1.获取详情SQL:查询四个字段

                   2.页面直接${}出来

代码示例:

页面:

所属公司:  <select id="companyId">
           <option value=0>请选择</option> </select>
 所属部门: <select name="deptId" id="deptId"> 
           <option value=0>请选择</option>
           </select><br>

JS:

$(function () { 
    //动态获取公司下拉框 
     $.ajax({ 
     url: "/dept/getAllByParentId",//调用获取公司列表接口 
     data: {"parentId": 0} 
     success: function (res) { 
        //拿到结果后,forin,遍历结果集合,拼接<option>标签给公司下拉框赋值 
         for (let x in res) {
         $("#companyId").append( "<option value=" + res[x].id + ">" + res[x].name + " 
            </option>" ) 
            }
          }
     }) 


     //根据选择的公司名称二级联动展示对应的部门 
     $("#companyId").change(function () { 
         //清空所有元素 
         $("#deptId").empty(); 
         //默认拼接请选择
         $("#deptId").append("<option value=>请选择</option>") 
         //ajax请求调用接口 
         $.ajax({ 
             url: "/dept/getAllByParentId",//调用根据公司ID获取部门列表接口
             data: {"parentId": $(this).val()},//将公司id传过去 //处理成功结果集合
             success: function (res) { //遍历结果集合,拼接得到的部门信息到下拉框中 
                for (let x in res) {
                    $("#deptd").append( 
                       "<option value=" + res[x].id + ">" + res[x].name + "</option>"
                      )
                 }
               } 
          }) 
       }) 
 })

后台:

controller

业务层:

实现层:

mapper :

xml:

二级联动回显:

代码示例:

       第一种方式:

1.获取详情SQL:查询四个字段

2.页面直接${}出来,其他的正常

第二种方式:如果是选择用Ajax回显所有的信息,则需要一行主动触发公司改变事件的代码,如:

$.ajax({
    url:"/findOneById",
    data:{"id":id},
    success:function(res){
        //回显一级:公司
        $("#companyId").val(res.companyId);
        //主动触发公司的改变事件
        $("#companyId").trigger("change");
        //回显二级:部门
        $("#dept")).val(res.deptId)
    }
}})

四、上传文件

<!--选择文件-->
<input type="file" id="file">
<!--提交(上传到服务器)-->
<input type="button" value="上传图片" onclick="uploadFile()">
<!--回显上传后的文件-->
<img id="img">
//上传图片
function uploadFile() {
    //根据id选择器获取到选择的file,这里需要用js的id选择器去获取,因为jquery的id选择器没有"files"的属性
    var file = document.getElementById("file").files[0];

    //上传文件,注意:post请求、不异步、不缓存,不转二进制、不转类型(以文件的形式传输)、文件上传需要以form表单的形式传值!!!!

    //创建FormData
    var formData = new FormData()
    formData.append("file",file);

    $.ajax({
        url:"/pur/uploadFile", //调用上传文件接口
        type:"post", //上传文件必须是post请求
        data:formData,
        contentType:false, //不转类型,仅以文件的形式传输
        cache:false, //不缓存
        async:false, //不异步
        processData:false, //不转二进制
        success:function (res) {
            //这里获取到的res是保存图片的路径,此时需要发送一个请求,以流的形式展示到页面上
            let value = "/pur/showImg?res="+res;
            $("#img").attr("src",value);
            $("[name=imgPath]").val(value);

        }
    })
}

五、复选框

遍历:

方式一:单独写一个接口,使用ajax请求,调用接口,返回结果后,遍历结果append拼接复选框(代码示例:略)

方式二:使用Model或者ModelAndView返回复选框的数据,在页面中使用遍历

方式二-代码示例如下:

思路:该方式需要再进入指定页面的控制层方法中,获取到复选框的动态数据,使用Model或者ModelAndView返回给页面。

后端:控制层:

前端:具体页面:

回显:

思路:通过调用回显接口,得到被选中的复选框的List idList,遍历该集合,将集合中存在的数据,属性设置为选中状态

后端:

实体类:返回集合

/**
 * 返回集合
 */
private List<String> HobbyList;

实现层:

(1)如果是在同一张表存的,以逗号隔开的字符串,则需要将字符串转为List,使用该方法:

Arrays.asList (xxx.split (",")); 会得到一个List 代码示例如下:

/**
 * 回显
 * @param userId
 * @return
 */
@Override
public User getUserById(String userId) {

    //根据ID获取详情信息
    User userById = userMapper.getUserById (userId);
    //如果获取的详情对象不为空
    if (null != userById){
        //获取对象中的爱好(逗号隔开字符串)
        String hobby = userById.getHobby ();
        //将逗号隔开的字符串,转为List集合
        List<String> hobbyList = Arrays.asList (hobby.split (","));
        //将得到的集合,赋值给对象中的集合字段
        userById.setHobbyList (hobbyList);
    }
    //返回详情结果
    return userById;

控制层:使用Model或者ModelAndView返回详情对象

前端:JS:

思路:将详情中得到的结果,和复选框的值进行比较,如果一致则选中状态设置为:true。

//从返回对象中获取爱好集合
var hobbyList = '${user.hobbyList}'.split(",")
//遍历该集合
for (let x in hobbyList) {
    $("[value = "+hobbyList[x]+"]").attr("checked",true)
}

复选框回显,结果集返回一对多,

控制层:controller

拿到集合,转成JSON格式的字符串,给到Model

实体类中:

mapper.xml中:

前端页面:

拿到Model中的foodsList 用JSON.parse()转成对象

遍历对象,比较vlalue一致就设置选中状态为true

六、登录失败3次,XX分钟后再登录

cookie存的单位是秒.

在判断密码错误的地方存放cookie

//获得cookie中的值
var e = document.cookie[2];
if(e=='3') {
    alert("登录失败三次,10s内不能重复登录")
    return false;
}



alert("密码错误")
//获取cookie的第三位
var e = document.cookie[2];
if(isNaN(e)) {//判断cookie中的值是不是不是一个数
    document.cookie = "a=1;max-age=10";
}else { //如果存在+1
    var newE = parseInt(e) + 1;
    document.cookie = "a=" + newE + ";max-age=10";
}

代码示例:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值