2012-04-23 78 views
4

我在文本框中尋找效果。 最初文本框的大小很小,輸入時文本框會變大。有沒有任何jQuery插件可用於此效果?如果不是這樣可以實現的話。打字時文本框的大小應該增大

+2

你嘗試過什麼?從Google ..開始怎麼樣?結果#3看起來很有用。 https://www.google.com/webhp?sourceid=chrome-instant&ie=UTF-8&ion=1#hl=en&sclient=psy-ab&q=textarea%20grow%20with%20text&oq=&aq=&aqi=&aql=&gs_nf=&gs_l= &pbx = 1&fp = a366a72422fd9740&ion = 1&bav = on.2,or.r_gc.r_pw.r_cp.r_qf。,cf.osb – Dutchie432 2012-04-23 18:02:11

+3

您需要先接受一些答案 – qwertymk 2012-04-23 18:02:22

+0

http://stackoverflow.com/questions/7745741/auto-expanding -textarea – Blazemonger 2012-04-23 18:03:14

回答

2
$("#mytextbox").keyup(function() { 
    $(this).attr("maxLength", $(this).attr("maxLength") + 1); 
    $(this).attr("size", $(this).attr("size") + 1); 
}); 

請注意,如果用戶按下帶有焦點文本框的功能鍵,則大小將增加,無論如何。您應該改爲監視其價值變動文本框:

$("#mytextbox").keyup(function() { 
    $(this).attr("size", $(this).val().length + 1); 
}); 

需要注意的是第二種方法也將支持複製/粘貼到輸入字段,而第一個不會,但你必須確保用戶有足夠的空間來複制(現在,大小設置爲當前值+1,這意味着用戶只能在大小增加之前一次輸入一個字符)。

+0

非常感謝你! – user1165815 2012-04-23 18:05:43

+0

糟糕,編輯我的答案,'maxlength'應該是'maxLength'。如果它適合你,請不要忘記接受這個答案! – 2012-04-23 18:06:20

+0

maxlength與物理尺寸不一樣。大寫與HTML屬性無關。 – Blazemonger 2012-04-23 18:06:36

2
var $text = $('myselector') 
$text.keyup(function() { 
    $(this).attr({size : $(this).val().length}); 
}); 

這將直接從文本框中輸入的任何字符串的長度獲取大小。

+0

不幸的是,這個答案不會讓用戶輸入,因爲大小會自動等於文本框中已有的內容,這意味着用戶贏了'不能將任何新文本放入。另外,如果只修改一個變量,則不需要將對象傳入'.attr()'函數。只需使用'$(this).attr(「size」,$(this).val()。length);' – 2012-04-23 18:15:40

+0

假設文本框有一個默認/起始大小,它工作正常。 – pdizz 2012-04-23 18:17:56

+0

糟糕,你是對的,我忘記了長度實際上比字符串中的字符數量大,因爲這些字符是0索引的。這工作正常。 :D – 2012-04-23 18:20:11

-1

看看這個jQuery插件:

http://www.unwrongest.com/projects/elastic/

+0

-1給該網站後面的人員。鏈接頁面上的演示不起作用! (我在Chrome上。) – 2012-04-23 18:54:57

+0

我正在使用chrome,它適用於我?你試過這個嗎? http://jsfiddle.net/janjarfalk/r3Ekw/ – MattSull 2012-04-23 20:08:15

+0

jsfiddle按原樣運行,但鏈接頁仍然是越野車。看起來像「彈性」是與textarea一起做的事情,但頁面的其餘部分不會一起玩...... – 2012-04-24 08:36:41