我们知道有的时候必须对文本输入框的输入长度进行限制,我们可以通过很简单的maxlength 对text 和 password类型的输入框的输入长度进行限制,可是当我们对textarea 使用maxlength 使用maxlength属性的时候,我们遗憾的发现,这个属性在textarea中是不起作用的有没有办法呢?答案是肯定的,有!就是使用htc的技术,什么是htc??简单的说,htc就是html component,豆腐言语表达能力不强,我们看看下面的例子就可以了:
test.html:
<form method="post">
<p><input type="text" size="30" maxlength="50" name="t1">
<textarea name="s1" rows="4" cols="30" maxlength="50" style="behavior:url(maxlength.htc)"></textarea>
</form>
大家注意到 以前很少见过 这样的 用法: style="behavior:url(maxlength.htc)" 我们再看看下面的htc 的内容
<public:component id="bhvmaxlength" urn="maf:maxlength">
<public:property name="maxlength" />
<public:attach event="onkeypress" handler="dokeypress" />
<public:attach event="onbeforepaste" handler="dobeforepaste" />
<public:attach event="onpaste" handler="dopaste" />
<script language="jscript">
// keep user from entering more than maxlength characters
function dokeypress(){
if(!isnan(maxlength)){
maxlength = parseint(maxlength);
var otr = element.document.selection.createrange();
// allow user to type character if at least one character is selected
if(otr.text.length >= 1)
event.returnvalue = true;
else if(value.length > maxlength-1)
event.returnvalue = false;
}
}
// cancel default behavior
function dobeforepaste(){
if(!isnan(maxlength))
event.returnvalue = false;
}
// cancel default behavior and create a new paste routine
function dopaste(){
if(!isnan(maxlength)){
event.returnvalue = false;
maxlength = parseint(maxlength);
var otr = element.document.selection.createrange();
var iinsertlength = maxlength - value.length + otr.text.length;
var sdata = window.clipboarddata.getdata("text").substr(0,iinsertlength);
otr.text = sdata;
}
}
</script>
</public:component>
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器