画页面遇到的坑以及解决

本文总结了前端开发中遇到的一些问题,包括bootstrap-datepicker插件样式混乱、jQuery选择器失效、页面跳转导致的样式冲突、下拉框值的获取与回显、bootstrap-fileinput插件样式记忆、设置页面焦点、键盘回车事件监听、刷卡事件处理等,并提供了相应的解决办法。

1.使用bootstrap-datepicker插件样式混乱


①引入js和css文件

<link rel="stylesheet"
	href="${ctx}/static/plugins/datepicker/datepicker3.css">
<script type="text/javascript"
	src="${ctx}/static/plugins/datepicker/bootstrap-datepicker.js"></script>
<script type="text/javascript"
	src="${ctx}/static/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js"></script>

②控制台检查原因,发现日期的样式并没有使用插件datepicker的,反而是引用了一个未知的id,考虑这个id是引用其他js文件造成的效果,跟datepicker的js文件冲突了。





全局搜索ui-datepicker-div,发现是jquery-ui的js文件里面的detepicker函数。                                                               

④页面引入了jquery-ui.js文件,并且引入顺序是bootsrap-datepicker.js文件在前面,页面加载的时候,jquery-ui的样式覆盖了bootstrap-datepicker的样式。                                                                                                                                        

⑤2种解决方案:删除jquery-ui.js文件或是改变引入顺序。                                                                     

2.使用jQuery选择器失效

在使用$("#templateNum").val()没有选中这个输入框,选择器失效的问题一般是id不唯一,检查jsp文件果然是在两个不同的form表单里有相同的id,可以使用表单选择器$("#templateForm input[name='templateNum']").val();就可以取到这个输入框里的值。【.val("") 括号里面有值是赋值   .val() 括号里面无值是赋值】

3.2个页面跳转,第一个页面有了第二个页面的表格样式

两个页面的表格id冲突

4.下拉多选框使用multiselect插件,值不回显

①引入js和css文件

<link rel="stylesheet" href="${ctx}/static/plugins/multiselect/multi-select.css" type="text/css">
<script type="text/javascript" src="${ctx}/static/plugins/multiselect/jquery.multi-select.js"></script>

②页面样式
<select class="form-control" id="roleIds" name="roleIds">						
	<option value="">---请选择---</option>						                      
</select>
③获取下拉框的值
success : function(data) {
	console.log(data.data.rows);
	var list = data.data.rows;
	for (var i = 0; i < list.length; i++) {
		$("#associateForm select[name='roleIds']").append(
			"<option value='"+list[i].id+"'>"
				+ list[i].roleName + "</option>");
	}
	$("#associateForm select[name='roleIds']").multiSelect();		
}

④设置值回显(解决能取到值但是值不回显)

var affiches = '${associateForm.roleIds}';
	if(affiches != ''){
		var arr = affiches.split(',');
		$("#associateForm select[name='roleIds']").multiSelect('select',arr);//设置回显值
}






5.下拉多选框也可以使用bootstrap-select插件

①引入css和js文件

<link rel="stylesheet" href="${ctx}/skin/bootstrap-select.min.css">
<script type="text/javascript" src="${ctx}/skin/bootstrap-select.min.js"></script>
②页面样式
<select id="goodsName" class="selectpicker" multiple></select>
③获取下拉框的值
function goodsNameInit() {
	$(".selectpicker").selectpicker({
		noneSelectedText : '请选择'
	});
	$(window).on('load', function() {
		$('.selectpicker').selectpicker('val', '');
		$('.selectpicker').selectpicker('refresh');
	});
	$.ajax({
		type : "post",
		contentType : "application/json",
		url : "${ctx}/order/goods/querygoods",
		dataType : "json",
		data : JSON.stringify({
			"pageSize" : 1000,
			"currentPage" : 1
		}),
		success : function(data) {
			console.log(data.data.rows);
			var list = data.data.rows;
			var select = $("#goodsName");
			for (var i = 0; i < list.length; i++) {
				select.append("<option value='"+list[i].id+"'>"
						+ list[i].goodsName + "</option>");
			}
			$('.selectpicker').selectpicker('val', '');
			$('.selectpicker').selectpicker('refresh');
		},
		error : function(xmlq, errq) {
			alert(errq);
		}
	});
};

6.使用bootstrap-fileinput插件上传文件的时候,样式被记住

①引入css和js文件

<link type="text/css" rel="stylesheet"href="${ctx}/static/plugins/bootstrap-fileinput/css/fileinput.css"/>
<script src="${ctx}/static/plugins/bootstrap-fileinput/js/fileinput.min.js"></script> 
<script src="${ctx}/static/plugins/bootstrap-fileinput/js/locales/zh.js"></script>

②页面样式

<div class="col-sm-10">
	<input type="file" id="msgFile" name="file" onchange="importMsg(this)" data-show-preview="false" />
</div>

③初始化fileinput

$('#msgFile').fileinput({
	language : 'zh', //设置语言 
	uploadUrl : "", //上传地址
	overwriteInitial : false, //是否显示预览
	showUpload : false, //是否显示上传按钮  
	showRemove : true,
	showPreview : false,
	dropZoneEnabled : true,//是否显示拖拽区域
	autoReplace : true,
	showCaption : true,//是否显示标题  
	allowedFileExtensions : [ 'xls', 'xlsx', 'png' ],//接收的文件后缀
	maxFileSize : 20480,//单位为kb,如果为0表示不限制文件大小
	maxFileCount : 1,
	msgFilesTooMany : "合同文件只能上传一个!",
	layoutTemplates : {
		actionDelete : ""
	}
}).on('fileclear', function(event) {
	$("#msgJson").val('');
});

④解决fileinput样式记住的问题

$('#msgModal').on('hidden.bs.modal', function (e) {
	// 关闭的时候销毁
	$('#msgFile').fileinput('clear').fileinput('destroy').unbind();
});


7.设置页面打开的焦点
$(function () {
	$("#saveRecordForm input[name='userCard']").focus();
});
8.监听键盘的回车事件
$("#saveRecordForm input[name='userCard']").bind('keydown',function(event){
    if(event.keyCode == "13") {
    	var val = $("#saveRecordForm input[name='userCard']").val();
		//查询基本信息
		$("#queryUserInfoTable").bootstrapTable('refresh');
		//查询消费记录
		$("#queryConsumeRecordTable").bootstrapTable('refresh');
    }
});  
9.设置每次刷卡的时候鼠标都能聚焦在某个输入框
//全局变量标志清不清空输入框
var flag = false;
//选中任何位置的输入
$(document).on("keypress", function(){
	if(flag){
		$("#saveRecordForm input[name='userCard']").val("");
		flag=false;
	};
	$("#saveRecordForm input[name='userCard']").focus();
});
//监听到回车事件才执行查询
$("#saveRecordForm input[name='userCard']").bind('keydown',function(event){
    if(event.keyCode == "13") {
		//按下回车就置为true,标识着要清空输入框
		flag=true;
    }
});  
10.监听刷卡的enter事件,第二次刷的时候页面会提交
找原因发现是页面有form表单,form表单默认enter是提交,所以刷新了页面,解决:
<form id="saveRecordForm" onkeydown="if(event.keyCode==13)return false;" class="form-horizontal">
</form>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值