首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

有式样代码的限字

2012-11-25 
有样式代码的限字编程序时候用到了ckeditor,但是Ckeditor输入汉字等之后传到数据库是加了一些样式的代码,

有样式代码的限字

编程序时候用到了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="提交" name="code">在文本框中限制字数,不分中英文==textarea name="留言信息" cols="50" rows="6" 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); // 行业动态推荐}}
?

?

?

?

?

?

热点排行