前端技术博客
来源:互联网 发布:python ide eclipse 编辑:程序博客网 时间:2024/05/22 03:00
- 一、有关“记住我”功能
“记住我”功能有许多种方式,本部分介绍两种
1. cookie
引用jQuery.cookie.js可以用cookie在浏览器端记录。
2. localsession
在服务器端记录用户信息(这个不太确定),是HTML5的本地存储,使用localStorage对象将WEB数据持久化在本地。但这种存储方式会带来新的安全问题。先贴一段代码如下:
<script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script> $(function() { if (localStorage.chkbx && localStorage.chkbx != '') { $('#remember_me').attr('checked', 'checked'); $('#username').val(localStorage.usrname); $('#pass').val(localStorage.pass); } else { $('#remember_me').removeAttr('checked'); $('#username').val(''); $('#pass').val(''); } $('#remember_me').click(function() { if ($('#remember_me').is(':checked')) { // save username and password localStorage.usrname = $('#username').val(); localStorage.pass = $('#pass').val(); localStorage.chkbx = $('#remember_me').val(); } else { localStorage.usrname = ''; localStorage.pass = ''; localStorage.chkbx = ''; } }); }); </script> <div class="container"> <form class="form-signin"> <h2 class="form-signin-heading">Please sign in</h2> <input type="text" class="input-block-level" placeholder="Email address" id='username'> <input type="password" class="input-block-level" placeholder="Password" id="pass"> <label class="checkbox"> <input type="checkbox" value="remember-me" id="remember_me"> Remember me </label> <button class="btn btn-large btn-primary" type="submit">Sign in</button> </form> </div>
测试可用,后期有更好更安全的解决方式,再陆续更新
二、页面跳转
直接贴代码:
function onclick(){ window.location.href = "http://www.baidu.com";}
三、搜索提示功能
纠结了半天,解决了下拉框的问题,除了样式太丑,其他都搞定了,但代码移植之后不成功,所以后半天还得继续纠结,先记录下来这个搜索提示的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>搜索</title><meta name="description" content=" 内容介绍不超过100个中文"><meta name="keywords" content=" 内容相关关键词3-5个"><link href="index.css" rel="stylesheet" type="text/css" /><script type="text/javascript" src="jquery.min.js"></script></head><body> <div class="gover_search"> <div class="gover_search_form clearfix"> <span class="search_t">关键词匹配搜索</span> <input type="text" class="input_search_key" id="gover_search_key" placeholder="请输入关键词直接搜索" /> <button type="submit" class="search_btn">搜索</button> <div class="search_suggest" id="gov_search_suggest"> <ul> </ul> </div> </div> </div><script type="text/javascript">//实现搜索输入框的输入提示js类function oSearchSuggest(searchFuc){ var input = $('#gover_search_key'); var suggestWrap = $('#gov_search_suggest'); var key = ""; var init = function(){ input.bind('keyup',sendKeyWord); input.bind('blur',function(){setTimeout(hideSuggest,100);}) } var hideSuggest = function(){ suggestWrap.hide(); } //发送请求,根据关键字到后台查询 var sendKeyWord = function(event){ //键盘选择下拉项 if(suggestWrap.css('display')=='block'&&event.keyCode == 38||event.keyCode == 40){ var current = suggestWrap.find('li.hover'); if(event.keyCode == 38){ if(current.length>0){ var prevLi = current.removeClass('hover').prev(); if(prevLi.length>0){ prevLi.addClass('hover'); input.val(prevLi.html()); } }else{ var last = suggestWrap.find('li:last'); last.addClass('hover'); input.val(last.html()); } }else if(event.keyCode == 40){ if(current.length>0){ var nextLi = current.removeClass('hover').next(); if(nextLi.length>0){ nextLi.addClass('hover'); input.val(nextLi.html()); } }else{ var first = suggestWrap.find('li:first'); first.addClass('hover'); input.val(first.html()); } } //输入字符 }else{ var valText = $.trim(input.val()); if(valText ==''||valText==key){ return; } searchFuc(valText); key = valText; } } //请求返回后,执行数据展示 this.dataDisplay = function(data){ if(data.length<=0){ suggestWrap.hide(); return; } //往搜索框下拉建议显示栏中添加条目并显示 var li; var tmpFrag = document.createDocumentFragment(); suggestWrap.find('ul').html(''); for(var i=0; i<data.length; i++){ li = document.createElement('LI'); li.innerHTML = data[i]; tmpFrag.appendChild(li); } suggestWrap.find('ul').append(tmpFrag); suggestWrap.show(); //为下拉选项绑定鼠标事件 suggestWrap.find('li').hover(function(){ suggestWrap.find('li').removeClass('hover'); $(this).addClass('hover'); },function(){ $(this).removeClass('hover'); }).bind('click',function(){ input.val(this.innerHTML); suggestWrap.hide(); }); } init();};//实例化输入提示的JS,参数为进行查询操作时要调用的函数名var searchSuggest = new oSearchSuggest(sendKeyWordToBack);//这是一个模似函数,实现向后台发送ajax查询请求,并返回一个查询结果数据,传递给前台的JS,再由前台JS来展示数据。本函数由程序员进行修改实现查询的请求//参数为一个字符串,是搜索输入框中当前的内容function sendKeyWordToBack(keyword){ /* var obj = { "keyword" : keyword }; $.ajax({ type: "POST", url: "${ctx}/front/suqiu2/search/prompt-keyword.action", async:false, data: obj, dataType: "json", success: function(data){ //var json = eval("("+data+")"); var key=data.split(","); var aData = []; for(var i=0;i<key.length;i++){ //以下为根据输入返回搜索结果的模拟效果代码,实际数据由后台返回 if(key[i]!=""){ aData.push(key[i]); } } //将返回的数据传递给实现搜索输入框的输入提示js类 searchSuggest.dataDisplay(aData); } }); */ //以下为根据输入返回搜索结果的模拟效果代码,实际数据由后台返回 var aData = []; aData.push(keyword+'接口1'); aData.push(keyword+'接口2'); aData.push(keyword+'接口3'); aData.push(keyword+'接口4'); aData.push(keyword+'接口5'); aData.push(keyword+'接口3'); //将返回的数据传递给实现搜索输入框的输入提示js类 searchSuggest.dataDisplay(aData);}</script></body></html>
四、url中有变量的问题
url: "search/searchHint?data="+keyword +"",
其中keyword是变量,前后用“+”拼接字符串
五、echarts 添加标签“全选”
echarts功能不太完善,一直有很多bug,比如下面:
1.
var ecConfig = require('echarts/config');myChart.on(ecConfig.EVENT.LEGEND_SELECTED, function (param){
这个LENGEND_SELECTED,移植到自己做的项目中居然不work,但在http://echarts.baidu.com:8897/echarts2/doc/example/legend.html 的demo中是可行的,这是其一;
2. 其二是直接在legend的data中加名称“测试”,如下:
legend: { data: [ '降水量','最高气温', '最低气温','测试' ] },
但移植出来就不可用,除非series也加入“测试”相关的内容。
3.研究了很久之后,不,应该说查了很多资料之后,终于找到了一个可行的demo,直接把网站贴出来吧:http://gallery.echartsjs.com/editor.html?c=xSJ3fpfG6
option = { title: { text: '折线图堆叠' }, tooltip: { trigger: 'axis' }, legend: { data:['邮件营销','联盟广告','视频广告','直接访问','搜索引擎','全选'] }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, toolbox: { feature: { saveAsImage: {} } }, xAxis: { type: 'category', boundaryGap: false, data: ['周一','周二','周三','周四','周五','周六','周日'] }, yAxis: { type: 'value' }, series: [ { name:'全选', type:'line' }, { name:'邮件营销', type:'line', stack: '总量', data:[120, 132, 101, 134, 90, 230, 210] }, { name:'联盟广告', type:'line', stack: '总量', data:[220, 182, 191, 234, 290, 330, 310] } ]};//全选处理逻辑var selAll = '全选';var selFlag = false;myChart.on('legendselectchanged', function (params) { //legend 全选操作 if(params.name == selAll){ selFlag = !selFlag;//全选,全不选切换 var dynamicSelected = {}; //设置全选 for(var index in params.selected){ dynamicSelected[index] = selFlag; } //重绘echarts myChart.setOption({legend:{ selected:dynamicSelected }}); } });
亲测可用,感谢zjfromzero朋友,解决了一个大问题。
六、input取值
jQuery取input中的value值,直接用
七、table设置固定宽度
table{ min-width: 100%;}td{ min-width: 100px;}.table-container{ overflow:auto; display: block;}
八、ajax请求不携带session导致重定向
由login页面登录进去之后,以后的每次ajax请求都需要带上sessionid值,意思就是带上许可证,才能获得服务器端的数据。简单的ajax请求如下:
$.ajax({ type: 'GET', url: this.path+'console/statusInfo', success:function(data) { console.log("请求用户信息:----"+JSON.stringify(data)); } })
这种ajax请求没有设置cookie,不携带sessionid,会导致302重定向,循环login请求。但具体cookie和session什么关系,只知道cookie是浏览器端,session是服务器端生成的,具体的回头还得再研究研究。
总之,ajax请求里面加上一句如下,就可以了
$.ajax({ type: 'GET', xhrFields: { withCredentials: true }, url: this.path+'console/statusInfo', success:function(data) { console.log("请求用户信息:----"+JSON.stringify(data)); } });
- 前端技术博客
- 前端技术博客学习
- 前端技术博客
- [Web前端技术教学]实现文字阴影-博客指定作业
- it类技术博客网址小计----前端相关
- 前端一些很不错的技术博客文章
- 有哪些值得关注的技术博客(前端篇)
- 国内技术团队博客(全都是前端!)
- 国内技术团队博客盘点(不只是前端!)
- 博客前端
- 前端博客
- web前端/移动端H5博客专家博客大全--值得收藏的前端技术大牛博客地址
- [Web前端技术教学]利用行内CSS技术对CSDN博客的细致美化
- 前端技术
- 前端技术
- 前端技术
- 前端技术
- 前端技术
- jQuery的核心
- js 原生预览图片
- 适配器模式
- Thinking In Java学习进程---对象的入门1.3 实现方案的隐藏
- Hibernate之连接池配置
- 前端技术博客
- linux exercise14
- LTE-TDD随机接入过程(6)-分场景描述竞争接入和非竞争接入的流程
- 【机器学习PAI实践五】机器学习眼中的《人民的名义》
- Python 多进程 multiprocessing.Pool类详解
- poj2947——Widget Factory(高斯消元求模线性方程)
- spark reduceByKey的小问题
- 关于Git的错误
- raster导入postgres Windows命令