Return to Snippet

Revision: 25218
at March 23, 2010 15:25 by digiteyes


Initial Code
<script type="text/javascript">

     

    // This javascript sets the default value of a lookup field identified

    // by <<FIELD DISPLAY NAME>> to the value stored in the querysting variable

    // identified by <<QUERYSTRING VARIABLE NAME>>

     

     

    // Customize this javascript by replacing <<FIELD DISPLAY NAME>> and

    // <<QUERYSTRING VARIABLE NAME>> with appropriate values.

    // Then just paste it into NewForm.aspx inside PlaceHolderMain

     

    _spBodyOnLoadFunctionNames.push("fillDefaultValues");

     

    function fillDefaultValues() {

      var qs = location.search.substring(1, location.search.length);

      var args = qs.split("&");

      var vals = new Object();

      for (var i=0; i < args.length; i++) {

        var nameVal = args[i].split("=");

        var temp = unescape(nameVal[1]).split('+');

        nameVal[1] = temp.join(' ');

        vals[nameVal[0]] = nameVal[1];

      } 

      setLookupFromFieldName("<<FIELD DISPLAY NAME>>", vals["<<QUERYSTRING VARIABLE NAME>>"]);

    }

     

    function setLookupFromFieldName(fieldName, value) {

      if (value == undefined) return;

      var theSelect = getTagFromIdentifierAndTitle("select","Lookup",fieldName);

     

    // if theSelect is null, it means that the target list has more than

    // 20 items, and the Lookup is being rendered with an input element

     

      if (theSelect == null) {

        var theInput = getTagFromIdentifierAndTitle("input","",fieldName);

        ShowDropdown(theInput.id); //this function is provided by SharePoint

        var opt=document.getElementById(theInput.opt);

        setSelectedOption(opt, value);

        OptLoseFocus(opt); //this function is provided by SharePoint

      } else {

        setSelectedOption(theSelect, value);

      }

    }

     

    function setSelectedOption(select, value) {

      var opts = select.options;

      var l = opts.length;

      if (select == null) return;

      for (var i=0; i < l; i++) {

        if (opts[i].value == value) {

          select.selectedIndex = i;

          return true;

        }

      }

      return false;

    }

     

    function getTagFromIdentifierAndTitle(tagName, identifier, title) {

      var len = identifier.length;

      var tags = document.getElementsByTagName(tagName);

      for (var i=0; i < tags.length; i++) {

        var tempString = tags[i].id;

        if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) {

          return tags[i];

        }

      }

      return null;

    }

    </script>

Initial URL
http://blogs.msdn.com/sharepointdesigner/archive/2007/06/13/using-javascript-to-manipulate-a-list-form-field.aspx

Initial Description
this snippet allows you to dynamically set the value of a SharePoint lookup field based on a URL parameter

Initial Title
Setting values of SharePoint Lookup field

Initial Tags
sharepoint

Initial Language
JavaScript