问题描述:文本区域内容前面会有空格、换行等字符,去除空格处理后存入数据库没有问题,但是读取到页面中还是出现空格、换行。
解决:最初想到的是将光标设置为开始位置:网上找到的兼容IE和FF的方法。
//将光标放在textarea的头部 function locatePoint(id){ var tea = document.getElementById(id); if (tea.setSelectionRange) { setTimeout(function() { tea.setSelectionRange(0,0); //将光标定位在textarea的开头,需要定位到其他位置的请自行修改 tea.focus(); },0); }else if (tea.createTextRange) { var txt=tea.createTextRange(); txt.moveEnd("character",0-txt.text.length); txt.select(); } }; var remark = "REMARK"; var memo = "MEMO"; locatePoint(memo); locatePoint(remark);
这样在做tab键切换时会定位到初始位置,但是保存数据库,再读取到页面还是会无故插入空格或换行。
最后百度解决:就是必须写在一行上面。
<textarea rows="2" cols="30" id="MEMO" name="MEMO" ></textarea>
附新浪微博:点击“话题”这个文字按钮后,在输入框文本域里面就会添加一段文字“#请在这里输入自定义话题#”,其中“请在这里输入自定义话题”处于被选中的状态
var tea = document.getElementById("t"); tea.setSelectionRange(0,5); //将光标定位在textarea的开头,需要定位到其他位置的请自行修改 tea.focus(); var textSelect = function(o, a, b){ //o是当前对象,例如文本域对象 //a是起始位置,b是终点位置 var a = parseInt(a,10), b = parseInt(b,10);//转换成十进制 var l = o.value.length; if(l){ //如果非数值,则表示从起始位置选择到结束位置 if(!a){ a = 0; } if(!b){ b = l; } //如果值超过长度,则就是当前对象值的长度 if(a > l){ a = l; } if(b > l){ b = l; } //如果为负值,则与长度值相加 if(a < 0){ a = l + a; } if(b < 0){ b = l + b; } if(o.createTextRange){//IE浏览器 var range = o.createTextRange(); range.moveStart("character",-l); range.moveEnd("character",-l); range.moveStart("character", a); range.moveEnd("character",b); range.select(); }else{ o.setSelectionRange(a, b); o.focus(); } } }; var $ = function(id){ return document.getElementById(id); }; $("btn").onclick = function(){ var a = $("a").value; var b = $("b").value; textSelect($("t"), a, b); };