最經(jīng)典的實現(xiàn)字符數(shù)控制的方案哦!(完善版)_第1頁
最經(jīng)典的實現(xiàn)字符數(shù)控制的方案哦!(完善版)_第2頁
最經(jīng)典的實現(xiàn)字符數(shù)控制的方案哦!(完善版)_第3頁
最經(jīng)典的實現(xiàn)字符數(shù)控制的方案哦!(完善版)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、最經(jīng)典的實現(xiàn)字符數(shù)控制的方案哦!最經(jīng)典的實現(xiàn)字符數(shù)控制的方案哦!( (完善版)完善版) 本文關(guān)鍵字:本文關(guān)鍵字: 當(dāng)我們在 ASP.NET 開發(fā)時,經(jīng)常會遇到一個頭疼的問題:字符數(shù)的控制 由于數(shù)據(jù)庫的字段長度是固定的,因此在進(jìn)行字符輸入時,最關(guān)鍵的就是控制字符的個數(shù)不能超過字段的長度,要不然,一個個異常會讓人瘋掉的。 對于單行文本框,不管是 HTML 控件還是 Web 控件,我們經(jīng)常會使用MaxLength 來控制,但這種控制無法控制到中文字符,即 MaxLength=50 的控制,可以輸入 50 個英文與 50 個中文,這樣的話,還是會導(dǎo)致中文字符數(shù)的溢出。 對于多行文本框,那就更慘了,使用

2、 MaxLenth 根本不起作用的。 下面提供的方案優(yōu)勢: 1)最佳的方法是在文本框中輸入時,控制到最大字?jǐn)?shù),超過時不能進(jìn)行輸入; 2)對于粘帖的情況也要能兼容,以前網(wǎng)上的方法不能控制到 paste 的情況; 3)對于最后的一個中文字符,寧愿舍去也不能多一個字符,比如 50 的字符數(shù),在第 49 個時,最后輸入一個中文,會導(dǎo)致最終字?jǐn)?shù)為 51,而這種情況,推薦是不能輸入中文,保證最終的字符數(shù)=50 最佳,因為放棄一個中文字符總比數(shù)據(jù)庫報錯要好吧。 4)為了提高開發(fā)效率,盡可能的減少代碼量,此方案不需要為文本框添加任何事件,而是由腳本塊自己解決,因此只需要把腳本塊飲包含到頁面中就可以了,這應(yīng)該是

3、相當(dāng)方便了吧 完善版修改:由于前一個方案中,一些輸入法無法激活 onpress 事件,導(dǎo)致對于中文的不支持,現(xiàn)在采用 onkeyup 事件處理,在處理方式上也進(jìn)行了修改,原來的 onpress 事件是進(jìn)行輸入控制,而 onkeyup 只能對已經(jīng)輸入后的字?jǐn)?shù)進(jìn)行字?jǐn)?shù)判斷,過長的進(jìn)行截短處理。 在原方案中,有位朋友指出:數(shù)據(jù)采用 n(type)系統(tǒng)不會報錯,是的,如果采用 n(type)的話,是以字符為基礎(chǔ)的,可以不考慮數(shù)據(jù)庫出錯的可能性,但同樣也存在一個界面顯示的問題,比如界面上的 Address 值,希望是 100 個字符,如果不進(jìn)行中英文字?jǐn)?shù)區(qū)分,最多將輸入 100 個中文,從而占 200

4、個字節(jié)空間,導(dǎo)致 Adress 在顯示時會超過預(yù)料的空間,界面搞得不易控制。因此,此方案還是有可取之處的。 具體新方案實現(xiàn): 1)將以下的代碼包含到頁面中: !- Stotype.len=function() return this.replace(/g,*).length; /Set maxlength for multiline TextBox function setMaxLength(object,length) var result = true; var controlid = document.selection.createRange().parentElem

5、ent().id; var controlValue = document.selection.createRange().text; var tempString=object.value; var tt=; for(var i=0;ilength;i+) 本文關(guān)鍵字:本文關(guān)鍵字: if(tt.len()length) tt=tt.substr(0,tt.length-1); 12341234 object.value=http:/ /Check maxlength for multiline TextBox when paste function limitPaste(object,len

6、gth) var tempLength = 0; if(document.selection) if(document.selection.createRange().parentElement().id = object.id) var tempValue = window.clipboardData.getData(Text); tempLength = object.value.len() + tempValue.len() - tempLength; if (tempLength length) tempLength -= length; var tt=; for(var i=0;it

7、empValue.len()-tempLength;i+) if(tt.len()(tempValue.len()-tempLength) tt=tempValue.substr(0,i+1); else 12341234 break; if(tt.len() 2)在需要控制的控件上添加 length=n(n 為要控制的字?jǐn)?shù))即可,如: 上面是 HTML 控件與 Web 控件的例子,只要加一個length 就可以了。 好了,大家可以體驗一下了哦:http:/ (已經(jīng)修改復(fù)了“沒有 length 無法輸入的問題”) 個人建議:1)可以把這個腳本塊放在 js 文件中,進(jìn)行引用即可 2)可以把腳本放在 Ba

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論