jquery 设置附加SPServices.SPCascadeDropdown的查找字段的初始值(Sharepoint 2010)

bogh5gae  于 2023-02-08  发布在  jQuery
关注(0)|答案(1)|浏览(91)

我使用SPServices.SPCascadeDropdowns链接自定义列表的自定义NewForm中的两个查找字段。
我想要做的是提供一个选项,以基于当前创建的项创建新项,并且我有前一项的所有值可用,但是我很难将使用SPCascadeDropdown的查找字段的值设置为给定值。
我发现可以使用以下代码来更改字段的值:

$("select[title='ParentLookupField']").val(prevParentLookupFieldValue);
$("select[title='ChildLookupField']").val(prevChildLookupFieldValue);

这似乎适用于SPCascadeDropdowns的父列,但即使它更改了值,似乎也不会触发SPCascadeDropdowns的更改,因为子列不会根据父列的更改进行更新。
示例:

$().SPServices.SPCascadeDropdowns({
        relationshipList: "ChildList",

        relationshipListParentColumn: "ParentValue",
        relationshipListChildColumn: "Title",

        parentColumn: "ParentLookupField",
        childColumn: "ChildLookupField",

        simpleChild: true,

        completefunc: function () {
                $("select").each(function (index, item) {
                    var title = item.title;
                    if (title === ""ParentLookupField"," || title === ""ChildLookupField",") {
                        $(item).find("option").each(function (index, item) {
                            var text = $(item).text();
                            if (text === "(None)") {
                                $(item).remove();
                            }
                        });
                    }
                });
            }
        });

$("select[title='ParentLookupField']").val(prevParentLookupFieldValue);
$("select[title='ChildLookupField']").val(prevChildLookupFieldValue);

那么,如何使用SPCascadeDropdown设置查找字段的初始值并使SPCascadeDropdown触发子字段的更改呢?

roejwanj

roejwanj1#

这取决于打开的更改如何注册到下拉列表。
如果使用$control.val(new value)设置其值,则可能需要手动调用change事件。
我使用这个函数在任何浏览器上安全地触发onchange事件:

//I have a utility class called KWizComCascadingLookup defined earlier
KWizComCascadingLookup.FireEvent = function (elm, event) {
    if ("createEvent" in document) {
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(event, false, true);
        elm.dispatchEvent(evt);
    }
    else
        elm.fireEvent("on" + event);
}

我这样称呼它:

KWizComCascadingLookup.FireEvent(elm, "change");

现在应该调用您的事件了,但奇怪的是瓦尔()没有调用它。

相关问题