1. 程式人生 > >input標籤的漢字長度限制

input標籤的漢字長度限制

/**
 * 給String擴充套件一個len方法, 用於獲取包含非ASCII碼字元的常規長度(非ASCII碼算2個字元)
 */
String.prototype.len = (function() {
    var ascRegexp = /[^/x00-/xFF]/g;
    return this.replace(ascRegexp, '..').length;
});

//下面是用jQuery做的對input做長度限制的事件繫結
//在keydown之後, 檢測其漢字長度, 在長度超過限定的50個字元之後, 動態修改其maxLength屬性.
//input和propertychange事件用於將使用者通過複製等方式輸入的多餘的字串做擷取, 使用了上面的漢字擷取
$('#diary_title').bind('keydown', function(event) {
    if($(this).val().len() >= 50) $(this).attr('maxLength', $(this).val().length);
}).bind('input', function(event) {
    $(this).val($(this).val().chinesesubstr(0, 50));
}).bind('propertychange', function(event) {
    $(this).val($(this).val().chinesesubstr(0, 50));
});

最初在專案裡面用的是在keydown事件中
event.preventDefault();
但是, 阻止預設事件會導致鍵盤失效, 也就是使用者無法刪除多餘的東西....
後來keydown事件中, event.preventDefault()之前, 增加了刪除等一切功能鍵,
但是後來發現的一個問題是, 使用者在達到最大輸入長度後, 如果選中一部分, 然後輸入字元,
做替換, 還是不可以......
所以現在通過動態修改maxLength來實現.

這個問題現在對於input解決了, 但textarea上面的maxLength貌似不怎麼靈光.....
懇求各位大俠對textarea上面的字元限制指點指點......