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();
}
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.设置每次刷卡的时候鼠标都能聚焦在某个输入框
$("#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');
}
}); //全局变量标志清不清空输入框
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>
本文总结了前端开发中遇到的一些问题,包括bootstrap-datepicker插件样式混乱、jQuery选择器失效、页面跳转导致的样式冲突、下拉框值的获取与回显、bootstrap-fileinput插件样式记忆、设置页面焦点、键盘回车事件监听、刷卡事件处理等,并提供了相应的解决办法。
419

被折叠的 条评论
为什么被折叠?



