jquery如何根据内容减少textarea中的cols数量

时间:2012-04-12 06:01:08

标签: javascript jquery html css

我有一个textarea,默认列数,如10或15或其他。我希望文本区域在blur上收缩包装文本。有谁知道怎么做?

到目前为止我已经

$('textarea').live('blur', function() {
    var textAreaWidth = $(this).val().length;
    $(this).attr('cols', 'textAreaWidth');

});

但由于显而易见的原因,这很难看。我根本不知道如何做到这一点。

任何想法?

3 个答案:

答案 0 :(得分:2)

中的'textAreaWidth'周围删除单引号

$(this).attr('cols', 'textAreaWidth');

这是一个变量,不需要引号。

答案 1 :(得分:1)

如果您只想减小尺寸,则应检查该值是否小于20,然后减少列数。试试这个:

<textarea rows="2" cols="20"></textarea>

$('textarea').on('blur', function() {
    var textAreaWidth = $(this).val().length;

    if (textAreaWidth < 20) {
       $(this).attr('cols', textAreaWidth);
    }
    $('textarea').on('keypress', function() {
       $(this).attr('cols', '20');
    });   
});

http://jsfiddle.net/4bccm/

答案 2 :(得分:0)

$('textarea').bind('blur keyup', function() {
    $(this).attr('cols', $(this).val().length);
});​

这会使您在键入/模糊时收缩或增长。