如何做一个翻页后还能选中选择框的列表


如何做一个翻页后还能选中选择框的列表

前言:产品那边要求,要做个列表,已经选中过的数据要打上勾。

提示:以下是本篇文章正文内容,下面案例可供参考

产品现在要想点击 请选择成员
在这里插入图片描述
后弹出这个页面,翻页也要选中
在这里插入图片描述

在这里插入图片描述
先贴代码
首先这个为点击事件,也就是申报工作室–第一个页面的代码
在这里插入图片描述
此处传的话吧id和名字都传过去另一个页面,
其实只需要传id就可以了,不过我这么做是不想再用选择器再找名字所以吧名字也传过去了

 // 选择成员,此处传的话吧id和名字都传过去
    function memberChoose(Str,teacherType){
        let hasSelIds = $("#member-id").val();
        let hasSelNames = $("#member-name").text();
        debugger
        userChooseIndex = layer.open({
            type: 1,
            title: Str,
            area:['960px','680px'],
            content:$.ajaxSubmitValue("${ctx}/teacher/studioChoose/noskin/chooseUserBatch.do?callback="
                +teacherType+"&hasSelIds="+hasSelIds+"&hasSelNames="+hasSelNames)
        })
    }
    //选择成员回调
    function chooseLearnSchoolMember(memberId,memberName){
        // 不可选择主持人即当前用户
        if(memberId.indexOf('${loginUser.id}') != -1){
            return layer.msg("成员不能为主持人!");
        }

        $("#member-id").val(memberId);
        $("#member-name").text(memberName);
        layer.close(userChooseIndex);
    }

接着到第2、3张图,成员列表的页面
此处先使用 <input type="hidden 标签来放置传过来的id和名字
在这里插入图片描述

以下是js代码

// 这两个变量很重要,用来装传过来的id和名字的
	var teachersName=[];
	var teachersId = [];
$(function(){
		// 初始化函数让指定选中框选中
		if($("#teachersId").val() != ''){
			let hasSelIds = '${param.hasSelIds}';
			teachersId = hasSelIds.split(",");
			teachersId.forEach(v => {
				$("input[type='checkbox'][value='"+v+"']").prop("checked",true);
			})
		}
		if($("#teachersName").val() != ''){
			let hasSelNames = '${param.hasSelNames}';
			teachersName = hasSelNames.split(",");
		}

	})
var totalSize = $("#totalSize").val();
	var limit = ${searchParam.pagination.limit};
	var totalPage = totalSize/limit;
	//分页器
	laypage({
	  cont: 'pageTeacher',//分页容器的id
	  pages: totalPage, //总页数
	  curr: ${searchParam.pagination.page}, //当前页
	  skin: 'yahei',  //当前页的颜色
	  jump:function(e,first){
		  if(!first){
			  $("#pagination").val(e.curr);
			// 分页这里是根据formId来发表单过去的
			// 所以上面才将传来的id和名字放在input组件里
			$("#tutorLayer").html($.ajaxSubmit('${formId}'));
			
		  }
	  }
	});


// 选择成员,这里掉的传来的回调函数
	function chooseTeacher(){
		${callback}(teachersId,teachersName);
	}

以下是比较重点的,由于你是要翻页后还能选到,所以不能够再判断哪个框选中后才是要的数据(即判断 $(selector).find[input[type=‘checkbox’]:checked)
),因为翻页后第二页的数据可能选中框没打勾,

所以这里改变思路,看到上面设置的全局变量teachersIdteachersName了么?就是用来装id和名字的,然后每次点击选中框都会判断时候有选中,选中就往这个数组加东西,不选中就减东西

$("input[type='checkbox']").on("change",function(){
		// 使用这种办法跨页选中
		if($(this).prop("checked")){
			teachersName.push($(this).parent().next().text());
			teachersId.push($(this).val());
		}else{
			teachersName.splice(teachersName.indexOf($(this).parent().next().text()),1);
			teachersId.splice(teachersId.indexOf($(this).val()),1);
		}

		// 给input重新赋值,方便传递下一页
		$("#teachersId").val(teachersId);
		$("#teachersName").val(teachersName);
	})

完成!

问题描述: 在Vue中实现翻页功能后,选择默认不生效。 解决方法: 1. 确保选择的默认值正确设置: 在Vue中,可以通过 v-model 指令将数据双向绑定到选择上。确保数据初始化时正确设置了选择的默认值。可以在选择的选项中使用 v-bind 来动态设置默认值,或者在数据初始化时直接设置默认选中的值。 例如: ```html <select v-model="currentPage"> <option v-for="page in pageCount" :key="page" :value="page">{{ page }}</option> </select> ``` 在上面的代码中,v-model="currentPage" 将选择与数据的 currentPage 属性双向绑定。确保 currentPage 的默认值正确设置。 2. 确保翻页选择的绑定值更新: 如果选择的选项是根据翻页动态生成的,需要确保选择的绑定值在翻页时及时更新。可以通过监听翻页事件,在事件触发时更新选择的绑定值。 例如: ```javascript methods: { onPageChange(page) { this.currentPage = page; } } ``` 在上面的代码中,onPageChange 方法是翻页事件的回调函数。在该方法中,更新选择的绑定值。 3. 确保选择的监听事件正确绑定: 如果选择的选项需要触发其他操作,例如重新加载数据或刷新页面等,需要确保监听事件正确绑定。 例如: ```html <select v-model="currentPage" @change="onPageChange"> <option v-for="page in pageCount" :key="page" :value="page">{{ page }}</option> </select> ``` 在上面的代码中,@change="onPageChange" 将选择的 change 事件与 onPageChange 方法绑定。 通过以上步骤,可以确保在Vue中实现翻页功能后,选择默认能够生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值