当前位置: 代码迷 >> Web前端 >> 有式样代码的限字
  详细解决方案

有式样代码的限字

热度:53   发布时间:2012-11-25 11:44:31.0
有样式代码的限字

编程序时候用到了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); // 行业动态推荐
					}
				}
?

?

?

?

?

?

  相关解决方案