2012-04-23 73 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