我已经阅读了有关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/
答案 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).