2011-11-08 63 views
3

我正在使用jEditable進行內聯編輯,所以當用戶雙擊一個文本時,它會變成一個文本框。CSS/jQuery - 限制所有動態生成的文本框的字符數

我需要限制的字符數用戶可以輸入到文本框中,但由於文本框從插件生成的,我不能使用內嵌樣式是這樣的:

<input type="text" name="name" maxlength="100" /> 

任何想法如何,我可以樣式中的所有文本框在CSS中,因此用戶不能輸入超過30個字符?

非常感謝......

+0

你可以計算出價值的文本30個字符的寬度與特定的字體,然後進行了文本框的寬度。這是如果你想在CSS中做到這一點.. – Charlie

+0

嗨,我已經限制了文本框的寬度,但我認爲插件似乎有自動增長功能,所以我仍然可以輸入儘可能多的字符,因爲我想... – shennyL

+1

看看這個頁面上的「字符計數器」部分:http://www.appelsiini.net/projects/jeditable/custom.html – Charlie

回答

3

我有點困惑。如果您已經使用jQuery,是否有理由不使用它來限制長度?

http://jsfiddle.net/rkw79/TvDvd/2/

$('body').delegate('input[type="text"]','focus', function() { 
    $(this).attr('maxLength',100); 
}); 

限制文本區域也只是櫃面jEditable使用了:http://jsfiddle.net/rkw79/TvDvd/3/

$('body').delegate('input[type="text"], textarea','focus', function() { 
    $(this).attr('maxLength',100); 
}); 
+0

嗨,謝謝,我正在尋找像這樣的東西。這適用於所有「正常」文本框,但可jable的文本框不受限制... – shennyL

+0

嗨,我通過刪除類型=「文本」得到了jeditable的工作。謝謝! – shennyL

+0

@ user834754:也許jEditable使用文本區域,嘗試更新的代碼 – rkw

1

你必須做這樣的事情:

$('input').attr('maxLength','25').keypress(maxLength); 

function maxLength(e) { 
    if(window.event) // IE 
    { 
     keynum = e.keyCode 
    } 
    else if(e.which) // Netscape/Firefox/Opera 
    { 
     keynum = e.which 
    } 


    if (keynum == 8) { return true; } 
     return this.value.length < $(this).attr("maxLength"); 
}