惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google Online Security Blog
Google Online Security Blog
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
Jina AI
Jina AI
博客园 - Franky
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
V
V2EX
雷峰网
雷峰网
云风的 BLOG
云风的 BLOG
V
Visual Studio Blog
F
Full Disclosure
Y
Y Combinator Blog
V
V2EX - 技术
Attack and Defense Labs
Attack and Defense Labs
S
Security @ Cisco Blogs
Schneier on Security
Schneier on Security
Microsoft Azure Blog
Microsoft Azure Blog
SecWiki News
SecWiki News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The GitHub Blog
The GitHub Blog
量子位
PCI Perspectives
PCI Perspectives
S
Secure Thoughts
D
Darknet – Hacking Tools, Hacker News & Cyber Security
AWS News Blog
AWS News Blog
Blog — PlanetScale
Blog — PlanetScale
爱范儿
爱范儿
K
Kaspersky official blog
B
Blog
A
Arctic Wolf
Hacker News: Ask HN
Hacker News: Ask HN
L
LangChain Blog
T
Tor Project blog
P
Privacy & Cybersecurity Law Blog
Recent Announcements
Recent Announcements
宝玉的分享
宝玉的分享
The Register - Security
The Register - Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
L
Lohrmann on Cybersecurity
D
Docker
A
About on SuperTechFans
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
The Last Watchdog
The Last Watchdog
S
Security Affairs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy International News Feed
Simon Willison's Weblog
Simon Willison's Weblog

博客园 - 花边软件,花边管理软件,服装(鞋)管理软件

让客户端js添加的Option也能保持在DropDownList TextBoxWatermark文本框水印效果 统一项目按钮外观 exe代替批处理文件添加注册表数据 自定义文本框控件,包含Name跟ID 系统权限设置 话说统一项目的Back(后退)控件 Css实现的颜色皮肤更换 sql注入 DataTable拷贝DataTable的数据 项目统一错误捕获 让每个页面的生命周期过程只产生一个Connection连接 一对多查询跟显示全路径Sql 多浏览器web开发界面的注意事项 - 花边软件,花边管理软件,服装(鞋)管理软件 - 博客园 如何将公共的JS变量跟方法集中放在同一个地方而且只加载一次 JS实现的HashTable类来记录删除的记录的ID跟Name 多语言站点 asp.net Web控件的设计时调试 正则表达式替换字符串 - 花边软件,花边管理软件,服装(鞋)管理软件 - 博客园
让TextArea支持MaxLength的自定义文本框控件
花边软件,花边管理软件,服装(鞋)管理软件 · 2008-07-16 · via 博客园 - 花边软件,花边管理软件,服装(鞋)管理软件

众所周知,TextArea并不支持MaxLength属性,所以我们就用JS来实现MaxLength的功能。
代码如下:

 1  public class TextMultiLine : TextBox
 2    {
 3        private const string SCP_SELECTPRODUCT_ONLY_SCRIPT_ID = "{A19D31C2-A21B-4acd-92DA-19A4237C54A8}";
 4        /// <summary>
 5        /// 
 6        /// </summary>

 7        public override TextBoxMode TextMode
 8        {
 9            get
10            {
11                return TextBoxMode.MultiLine;
12            }

13        }

14
15        /// <summary>
16        /// 
17        /// </summary>
18        /// <param name="writer"></param>

19        protected override void AddAttributesToRender(HtmlTextWriter writer)
20        {
21            base.AddAttributesToRender(writer);
22            writer.AddAttribute("onpaste""return false;");
23            writer.AddAttribute("onpcopy""return false;");
24            if (base.MaxLength > 0)
25            {
26                writer.AddAttribute("onkeydown""textCounter(this,"+base.MaxLength+");");
27                writer.AddAttribute("onkeyup""textCounter(this,"+base.MaxLength+");");
28            }

29        }

30
31        /// <summary>
32        /// 
33        /// </summary>
34        /// <param name="e"></param>

35        protected override void OnPreRender(EventArgs e)
36        {
37            base.OnPreRender(e);
38            RenderJavaScript();
39        }

40        /// <summary>
41        /// 
42        /// </summary>

43        private void RenderJavaScript()
44        {
45            string SCP_SELECTPRODUCT_ONLY_SCRIPT =
46                    "function textCounter(field, maxlimit)\n" +
47                    "{\n" +
48                        "if (field.value.length > maxlimit) \n" +
49                        "{\n" +
50                //如果元素区字符数大于最大字符数,按照最大字符数截断; 
51                            "field.value = field.value.substring(0, maxlimit); \n" +
52                        "}\n" +
53                    "}";                    
54
55            if (!Page.ClientScript.IsClientScriptBlockRegistered(SCP_SELECTPRODUCT_ONLY_SCRIPT_ID))
56            {
57                Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), SCP_SELECTPRODUCT_ONLY_SCRIPT_ID, SCP_SELECTPRODUCT_ONLY_SCRIPT,true);
58            }

59        }

60    }