使用JQuery和SharePoint使FormBody缩小和扩展

时间:2016-06-15 12:22:52

标签: javascript jquery css sharepoint

我在sharepoint中创建一个表单。我有一个文本框的ms-FormBody。我希望用户能够双击该框以展开该框,如果他们再次双击,它将缩小回来。这也是在SharePoint中。

编辑:感谢@Thriggle的一些帮助,我非常接近我想要的这个项目的目标。现在的问题是,无论你输入的是什么,只会留在一条线上(可能是外包裹?)。文本框实际上并没有占用更少的空间(这不是什么大不了的事,但如果你能想到的话,随着这个盒子调整大小,其余的盒子也会移动)我想知道是否有办法程序启动时盒子会很小。

Image of big text boxes Image of small text boxes Problem with project

1 个答案:

答案 0 :(得分:1)

根据您的屏幕截图,我假设您正在使用Nintex Forms。

对于纯文本多行字段

以下内容适用于纯文本多行字段,但不适用于富文本或增强的富文本字段(两者都不是由普通的textarea元素表示)。

在表单设置的“自定义JavaScript”部分中,您可以添加以下代码:

ExecuteOrDelayUntilScriptLoaded(function(){setTimeout(checkFieldExists,1000);},"sp.js");

function checkFieldExists(){
    // Nintex forms load slowly; we'll hold off on running the code
    // until we're able to access the element through the DOM.
    var field = document.getElementById(DescriptionID);
    if(field){
        // The field exists, time to attach an event listener.
        addExpansionToggleEvent(field);
    }else{
        // Wait a second, then check again.
        setTimeout(checkFieldExists,1000);
    }
}

function addExpansionToggleEvent(field){
    field.style.height = ""; // remove the default height=100%
    field.ondblclick = function(){
        var rows = field.getAttribute("rows"); 
        field.setAttribute("rows",+rows < 10 ? 10 : 1);
    };
}

这假设您将DescriptionID的客户ID添加到要切换的纯文本多行字段中,如屏幕截图所示。

对于富文本多行字段

富文本字段(奇怪地)由iframe代替textarea元素。

可以将以下代码添加到“自定义JavaScript”部分,以便在双击富文本字段时提供扩展/收缩行为,但请注意,这不会重新调整窗体上其他控件的布局方式以解释领域的新规模...所以它并不是特别有用。

ExecuteOrDelayUntilScriptLoaded(function(){setTimeout(checkFieldExists,1000);},"sp.js");
function checkFieldExists(){
    var iframes = document.querySelectorAll("iframe[title=\"Rich Text Editor\"]");
    if(iframes.length > 0){
        addExpansionToggleEvent(iframes);
    }else{
        setTimeout(checkFieldExists,1000);
    }
}
function addExpansionToggleEvent(iframes){
    for(var i = 0, len = iframes.length; i < len; i++){
        var body = iframes[i].contentDocument.querySelector("body");
        (function(container){
            body.ondblclick = function(){
                container.height = +(container.height) < 140 ? 140 : 30; 
            };
        })(iframes[i]);
    }
}

同样,此代码专门针对富文本字段,不适用于纯文本或增强的富文本字段。