第331天:UCH资料更改中的“姓名”字符数限制,前半生与后半生

星期四 阴 13~20℃

UCH资料更改中的“姓名”字符数限制,及JS处理中英文的maxlength

UCH 资料更改中的“姓名”字符数限制,默认为 10,即 5 个汉字,改成 20 应该够用了。

source/cp_profile.php

搜到 getstr($_POST['name'],默认为 getstr($_POST['name'], 10, 1, 1, 1),把 10 改成 20。

下面还有一个文件,没测出来是限制哪里的:

admin/admincp_space.php

搜到 getstr($_POST['name'],默认为 getstr($_POST['name'], 20, 1, 1, 1)

另外,在 input 中也加入限制吧,不要间接欺骗用户,假如用户写了长长的一串,结果提交完成后发现被截断了,多不爽。所以从填写时就用 maxlength="20" 限制它。不过可恨的是 maxlength 计算的是字符数,这样等于是可以输入 20 个汉字或 20 个字母,而实际需要的是限制 10 个汉字或 20 个字母。

问了下 Ryan,说要用 JS,讨来一个(下列代码复制到记事本存成 html):

<SCRIPT LANGUAGE="JavaScript">
//只需改代码中的两处20,不要改161
var maxLen=20;
function checkMaxInput(obj) {
var m=obj.value.length;
var n=m; var j=0;
for (var i=0;i<m;i++) {
if (obj.value.charCodeAt(i)<0||obj.value.charCodeAt(i)>161)
{  n=n+1; if ( i < 20 ) { j=j+1; } } }
if(n>maxLen) {  obj.value=obj.value.substring(0,maxLen-j);
remLen1.innerText=’[最大可输入'; remLen2.innerText=maxLen; remLen3.innerText='字符,';
remLen4.innerText='您已达到输入上限!'; remLen5.innerText=']‘; }
else { remLen1.innerText=’[最大可输入'; remLen2.innerText=maxLen;
remLen3.innerText='字符,还可输入'; remLen4.innerText=maxLen-n; remLen5.innerText='字符]‘; } }
//–>
</SCRIPT>

<textarea name="creditcontent" cols="45" rows="5" onKeyDown="checkMaxInput(this)" onKeyUp="checkMaxInput(this)" onBlur="checkMaxInput(this)">
</textarea>
<br/><br/>
<input type="text" onKeyDown="checkMaxInput(this)" onKeyUp="checkMaxInput(this)" onBlur="checkMaxInput(this)" />
<br/><br/>
<font id="remLen1"></font>
<font color=red id="remLen2"></font>
<font id="remLen3"></font>
<font color=red id="remLen4"></font>
<font id="remLen5"></font>

整理精简后(特别注意:如果无效,检查 js 是否紧接在 <input> 上方):

<script>
//只需改代码中的两处20,不要改161
var maxLen=20;
function checkMaxInput(obj) {
 var m=obj.value.length;
 var n=m; var j=0;
 for (var i=0;i<m;i++) {
  if (obj.value.charCodeAt(i)<0||obj.value.charCodeAt(i)>161) {
   n=n+1;
   if ( i < 20 ) {
    j=j+1;
   }
  }
 }
 if(n>maxLen) {
  obj.value=obj.value.substring(0,maxLen-j);
 }
}
</script>

<input type="text" onKeyDown="checkMaxInput(this)" onKeyUp="checkMaxInput(this)" onBlur="checkMaxInput(this)" />


前半生与后半生

在布棉的《谁没有曾经 但谁会整天说曾经?》看到的一条回复:

成王败寇,自古如此!
韩信胯下之辱之所以能成为美谈是因为他最终火了,红了。。。
人一生要看的永远是后半生。
前半生即使是一坨屎,只要后半生变成金子,恭喜你,你是正面教材!
前半生是金子,后半生变成一坨屎,不好意思,你就是一坨屎!

RSS

上一篇:

下一篇:

Comment (1)

  1. 前半生与后半生很有道理,自古如此。

    回复:以前有一个谁说过,很多时候评论比文章好看,很有根据的:)

    朱高 回复于 2009-4-17 19:04:55

发表评论

电子邮件地址不会被公开。 必填项已用*标注