This project has moved. For the latest updates, please go here.
1

Closed

ParentObject Null in $.fn.SPServices.SPCascadeDropdowns

description

Iv'e had code in production that worked perfectly up until last week. Then without changing anything it started throwing the following error;

Uncaught Type Error: Cannot call method 'push' undefined

My platform is SharePoint 2013 online.

I am using the $.fn.SPServices.SPCascadeDropdowns function with two dropdowns the parent being a simple dropdown and the child a multi-select.

I have the following code in a Script Editor webpart on the edit and new item forms on a simple out of the box custom list. ** I exhausted the combinations of jquery and SPServices versions as a troubleshooting method and this is just what I have now.
<script type="text/javascript" src="https://myweburl.com/SiteAssets/js/jquery-1.11.0.js"></script>
<script type="text/javascript" src="https://myweburl.com/SiteAssets/js/jquery.SPServices-2014.01ALPHA1.js"></script>

<script type="text/javascript">
    $(document).ready(function () {
        $().SPServices.SPCascadeDropdowns({
            relationshipList: "Lookup Plants",
            relationshipListParentColumn: "Market",
            relationshipListChildColumn: "Title",
            relationshipListSortColumn: "Title",
            parentColumn: "Market",
            childColumn: "Plant",
            debug: true
        });
    });
</script>
After stepping through the code I realized that the code below (line 1398) was not finding the dropdown control on either form. *Again, this exact code was working a couple of days ago.
var parentSelect = new DropdownCtl(opt.parentColumn);
stepping through some more I see where you are finding the control with this code (line 4090)
if ((this.Obj = $("select[Title='" + colName + "']")).length === 1) ...
when I check the source of the rendered page in SharePoint I realize the issue.
The title attribute in the select element actually says;
title="Market Required Field"
So all I had to do is change the parentColumn in config properties of SPCascadeDropdowns
<script type="text/javascript" src="https://myweburl.com/SiteAssets/js/jquery-1.11.0.js"></script>
<script type="text/javascript" src="https://myweburl.com/SiteAssets/js/jquery.SPServices-2014.01ALPHA1.js"></script>

<script type="text/javascript">
    $(document).ready(function () {
        $().SPServices.SPCascadeDropdowns({
            relationshipList: "Lookup Plants",
            relationshipListParentColumn: "Market",
            relationshipListChildColumn: "Title",
            relationshipListSortColumn: "Title",
            parentColumn: "Market Required Field", <<< Added "Required Field"
            childColumn: "Plant",
            debug: true
        });
    });
</script>
I am thinking maybe it could be a simple fix just to add an additional check in the if else statement like this?
} else if ((this.Obj = $("select[Title='" + colName + " Required Field']")).length === 1) ...
I have checked my other versions of SharePoint and none of the titles have the "Required Field" text in them, so I figured this was something new they just release in SharePoint online because I hadn't change a single thing.

I apologize if this is already documented or if this doesn't belong in the issues thread, but I spent a few hours tracking everything down and thought it could help some one else save some time.
Closed Dec 17, 2014 at 3:19 PM by sympmarc
Mistakenly didn't close these issues when 2014.01 was released.

comments

sympmarc wrote Jan 31, 2014 at 1:42 PM

I'm aware of this issue and I have a blog post about it. I'm going to have a fix in the 2014.01 release, which I hope to get out there very soon. It's a little tricky because the " Required Field" part is localized in non-English sites, but it's solvable.

M.

sympmarc wrote Feb 1, 2014 at 7:59 PM

I've got a fix in 2014.01ALPHA2, which I'll post shortly.