展开ALREADY包含文本的textarea

时间:2015-07-27 08:38:03

标签: javascript jquery html textarea

我已经阅读了有关textareas的所有帖子 - 而且,是的,我也觉得它被击败了......但是我有一种情况我可以&找到一篇关于它的帖子,它让我疯了5天了。

现状:
具有正常显示状态的多个(数百个)textareas:none根据需要变为可见 我通过数据库保存正在进行的工作...并重新打开表单以继续输入数据。 (是的,如果textareas中有数据,那么代码可以改变显示状态 - 但这与情况无关。

我目前有一个非常好的小部件来扩展我的textareas因为我输入数据 - 我的问题是,当我重新打开表单时,textareas会回到它们的初始高度。

我试图通过触发所有textareas中的keyup事件来创建一个处理表单加载时处理所有textareas的函数 - 但是它并没有使它们扩展...但是,如果我只是单击该字段然后使用他们打开的箭头键。不幸的是,这不是一个选择...就像我说过几百个textareas。

这是我为keyup事件/触发器获得的代码:

    $("textarea").each(function() {
        $(this).keyup(function() {
            var target = $(this).attr("id");
            var tElement = document.getElementById(target);
            GrowUP(tElement);
        });
    });

    $("textarea").trigger('keyup');

和我扩展textareas的代码:

    function GrowUP(oTextArea){
        var nMaxChars = 2000;
        var nTextLength = oTextArea.value.length;
        setTextAreaHeightWidth(oTextArea);
        if (nTextLength >= nMaxChars){
            oTextArea.value = oTextArea.value.substring(0, nMaxChars);
            return;
        }
    }

    function setTextAreaHeightWidth(oTextArea){
        var nTA5Height = 20;
        var nTextLength = oTextArea.value.length;
        var sTextAreaType = oTextArea.className;
        var nHeight;
        var nWidth;
        if (sTextAreaType.indexOf("long") >= 0){
            nHeight = nTA5Height;
        }
        // setting default height for the text area
        oTextArea.style.height = nHeight + "px";
        if (nTextLength > 0 && oTextArea.scrollHeight >= nHeight){
            oTextArea.style.height = oTextArea.scrollHeight + "px";
            if (navigator.userAgent.indexOf("Firefox") > 0){
                oTextArea.style.height = oTextArea.scrollHeight + 20 +"px";
            }
        }
    }

我对任何建议持开放态度。

好的 - 更新: 我找到了一种方法来欺骗JSFiddle将数据输入到现场...
只需选择第二个复选框即可显示textarea。 textarea在初始高度打开 - 我需要是EXPANDED高度(如果我编写的代码实际工作,它应该是!)

附:在JSFIDDLE中," Frameworks&分机"你必须确保它说'#34;没有包装" ...它已经自动将其更改为"在DOM准备好"哪个不起作用!
这里有链接:http://jsfiddle.net/MitchinThailand/fqcppux8/6/

1 个答案:

答案 0 :(得分:0)

For a quick and simple fix, instead of triggering the keyup event in your afterOnLoad() function, trigger it after the switch statement in your Summary(obj) function. Here is a working fiddle: https://jsfiddle.net/uwzo25fs/1/

In general, just trigger the event(s) that modify element heights AFTER you have stopped hiding the corresponding element(s).