编程序时候用到了ckeditor,但是Ckeditor输入汉字等之后传到数据库是加了一些样式的代码,我前台展示的时候需要截取一定长度的汉字。
因为我用java程序截取时候会把样式代码一块算进来,如:<p>我是徐士刚</p>,如果我截取2个字符的话就会展示出<p所以采用js方式。
?
方式1、用div的max-width.但是div支持单行。
方式2、用js截取。
方式3、用正则过滤掉标签。
方式2和方式3都有各自的好处,如果不想用方式2就用方式3,逻辑处理全在类里面,相当较清晰。、
?
具体代码如下:
在文本框中提示字数功能
javascrip代码
<script language="javascript"> function checklen(obj,obj2){ var str = obj.value; document.getElementById(obj2).innerText = str.length; } function DoSubmit(form) { if (form.msg.value.length == 0) { alert("请填写您的留言信息!"); return false; } if (form.msg.value.length > 30) { alert("您的留言已超过30个字!"); return false; } if (form.lxr.value.length > 10) { alert("您的联系方式已超过10个字!"); return false; } return true; } <script/>?
?
html代码:
<form name="lmForm" action="xxx" onSubmit="return DoSubmit(this)" method="post" 您的留言信息:可输入30个字 已输入==span id="tno" style="color:red;">0==/span==个字。 ==textarea name="msg" cols="60" rows="10" maxlength="30" onpropertychange="checklen(this,'tno')">==/textarea== 您的联系方式:(可输入10个字。) 已输入==span id="tno2" style="color:red;">0==/span==个字。 ==textarea name="lxr" cols="30" rows="3" maxlength="10" onpropertychange="checklen(this,'tno2')">==/textarea== ==input type="submit" value="提交" class="button"== </form>
?
在文本框中限制字数,不分中英文 ==textarea name="留言信息" cols="50" rows="6" class="bot" id="youbian" onkeyup="checkLength(this);">==/textarea== 限制字数显示剩余字数,最大长度: 30 还剩: ==span id="chLeft">30==/span== ==script type="text/javascript"== function checkLength(which) { var maxChars = 30; if (which.value.length > maxChars) which.value = which.value.substring(0,maxChars); var curr = maxChars - which.value.length; document.getElementById("chLeft").innerHTML = curr.toString(); } </script>?
在文本框能区分并限制中文英字数功能
首先,既然要限制字数,肯定要想办法实时获取用户在文本框里输入的文字的数量。input控件有个length的属性,可以方便地获取字数。可是,它所返回的字数无论是中文还是英文或者数字,1个字就算1个字。客户要限制字数的原因是为了页面显示的时候排版不会乱,因此一个汉字需要按2个英文字符来计算。这样的话,这个默认的length失效了。
怎么区分中文和英文呢?string对象有一个叫charCodeAt(index)的方法,可以获取字符串中某一个字符的编码。因为字母数字的ascii编码都小于255而汉字的编码肯定大于255,因此我们可以使用此方法来判断字符串占用多少英文字符的宽度。
<textarea id="desc" rows="4" cols="20" onchange="showNum();"></textarea> <span id="areamsg"></span> <script language="javascript"> function showNum(){ var strTemp=document.getElementById("desc").value; var sum=0; for(var i = 0;i==strTemp.length;i++){ if((strTemp.charCodeAt(i)>=0)&&(strTemp.charCodeAt(i)<=255)){ sum=sum+1; }else{ sum=sum+2; } if(sum>10){ var str=strTemp.substring(0,i); document.getElementById("desc").value=str; document.getElementById("areamsg").innerHTML="已经输入10字符"; break; }else{ document.getElementById("areamsg").innerHTML="已输入字符: "+sum; } } } </script>
?
项目中的实际应用:
部分代码如下:
?
int sum = 0; for (int j = 0; j < content.length(); j++) { if ((content.charAt(j) >= 0) && (content.charAt(j) <= 255)) { sum = sum + 1; } else { sum = sum + 2; } if (sum > 154) { request.get().setAttribute("recommend11_content",content.substring(0, j) + "..."); // 行业动态推荐 break; } else { request.get().setAttribute("recommend11_content", content); // 行业动态推荐 } }?
?
?
?
?
?