<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: lookup code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Mon, 06 Oct 2008 12:33:13 GMT</pubDate>
    <description>DZone Snippets: lookup code</description>
    <item>
      <title>Javascript LookupControl</title>
      <link>http://snippets.dzone.com/posts/show/2278</link>
      <description>A lookup control is a common thing to have on many web pages.  In this case we assume a textbox, a command button, and a label of some sort to display a description.&lt;br /&gt;&lt;br /&gt;The HTML might look like this&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;label for="txtExistingClient"&gt;Client&lt;/label&gt;&lt;br /&gt;&lt;input id="txtExistingClient" name="txtExistingClient" type="text" size="15" maxlength="14" class="text uppercase" runat="server"&gt;&lt;br /&gt;&lt;input id="cmdExistingClientLookup" name="cmdExistingClientLookup" type="button" value=" ? "&gt;&lt;br /&gt;&lt;span id="lblExistingClient"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Here is a javascript function to call in the onload to setup that lookup control.  And examples of the functions required.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;// ----------------------------------------------------------------------------&lt;br /&gt;// SetupLookupControl&lt;br /&gt;//&lt;br /&gt;// Description : sets up a lookup control by linking it to its &lt;br /&gt;//    associated controls and hooking up the event handlers&lt;br /&gt;//&lt;br /&gt;// Arguments :&lt;br /&gt;//    strTextBoxID               : input type=text id&lt;br /&gt;//    strLookupButtonID          : input type=button id&lt;br /&gt;//    strLabelID                 : span of div id&lt;br /&gt;//    funcTextBoxOnChange        : function for textbox's onchange and onblur event&lt;br /&gt;//    funcLookupButtonOnClick    : function for lookup button's onclick event&lt;br /&gt;//&lt;br /&gt;// Dependencies : none&lt;br /&gt;//&lt;br /&gt;// History :&lt;br /&gt;// 2006.07.14 - WSR : created&lt;br /&gt;//&lt;br /&gt;function SetupLookupControl( strTextBoxID, strLookupButtonID, strLabelID, funcTextBoxOnChange, funcLookupButtonOnClick )&lt;br /&gt;   {&lt;br /&gt;&lt;br /&gt;   // get reference to lookup button&lt;br /&gt;   var ctlLookupButton = document.getElementById(strLookupButtonID);&lt;br /&gt;&lt;br /&gt;   // if lookup button was found&lt;br /&gt;   if (ctlLookupButton)&lt;br /&gt;      {&lt;br /&gt;&lt;br /&gt;      // hookup event handlers and control references&lt;br /&gt;      ctlLookupButton.onclick = funcLookupButtonOnClick;&lt;br /&gt;      ctlLookupButton.textbox = document.getElementById(strTextBoxID);&lt;br /&gt;&lt;br /&gt;      // if textbox was found&lt;br /&gt;      if (ctlLookupButton.textbox)&lt;br /&gt;         {&lt;br /&gt;&lt;br /&gt;         // hookup event handlers and control references&lt;br /&gt;         ctlLookupButton.textbox.onchange = funcTextBoxOnChange;&lt;br /&gt;         ctlLookupButton.textbox.onblur = funcTextBoxOnChange;&lt;br /&gt;         ctlLookupButton.textbox.label = document.getElementById(strLabelID);&lt;br /&gt;&lt;br /&gt;         // init last value property of textbox&lt;br /&gt;         if ( typeof ctlLookupButton.textbox.lastvalue == 'undefined' )&lt;br /&gt;            ctlLookupButton.textbox.lastvalue = ''; &lt;br /&gt;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;//&lt;br /&gt;// SetupLookupControl&lt;br /&gt;// ----------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;// ----------------------------------------------------------------------------&lt;br /&gt;// cmdTimekeeperLookup_click&lt;br /&gt;// Description: handler for requesting timekeeper selection button click event&lt;br /&gt;// Arguments: none&lt;br /&gt;// Dependencies:&lt;br /&gt;//    TimekeepQuery (lookup.js)&lt;br /&gt;//&lt;br /&gt;function cmdTimekeeperLookup_click()&lt;br /&gt;   {&lt;br /&gt;&lt;br /&gt;   // show timekeeper query window&lt;br /&gt;   TimekeepQuery( this.textbox );&lt;br /&gt;&lt;br /&gt;   // update timekeeper information&lt;br /&gt;   this.textbox.onchange();&lt;br /&gt;&lt;br /&gt;   // process default action&lt;br /&gt;   return true;&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;//&lt;br /&gt;// cmdTimekeeperLookup_click&lt;br /&gt;// ----------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// ----------------------------------------------------------------------------&lt;br /&gt;// txtTimekeeper_change&lt;br /&gt;// Description: event handler for timekeeper textbox change event&lt;br /&gt;// Arguments: none&lt;br /&gt;// Dependencies:&lt;br /&gt;//    window.strTkprMask (masking.js)&lt;br /&gt;//    trim&lt;br /&gt;//    ApplyMask (masking.js)&lt;br /&gt;//    TimekeepLookup (lookup.js)&lt;br /&gt;//    UpdateElementText (shared.js)&lt;br /&gt;//&lt;br /&gt;function txtTimekeeper_change()&lt;br /&gt;   {&lt;br /&gt;&lt;br /&gt;   var strTimekeepName = '';&lt;br /&gt;   var objXMLDOM;&lt;br /&gt;   var nodField;&lt;br /&gt; &lt;br /&gt;   // trim input&lt;br /&gt;   this.value = this.value.trim();&lt;br /&gt;  &lt;br /&gt;   // if there was input&lt;br /&gt;   if ( this.value.length &gt; 0 )&lt;br /&gt;      {&lt;br /&gt;&lt;br /&gt;      // apply timekeep mask to textbox input&lt;br /&gt;      ApplyMask( this, window.strTkprMask );&lt;br /&gt;&lt;br /&gt;      // if inputted timekeeper is different from current timekeeper&lt;br /&gt;      if ( this.lastvalue != this.value )&lt;br /&gt;         {&lt;br /&gt;&lt;br /&gt;         // request timekeeper information&lt;br /&gt;         objXMLDOM = TimekeepLookup( this.value );&lt;br /&gt;&lt;br /&gt;         // if XML DOM object returned&lt;br /&gt;         if ( typeof objXMLDOM == 'object' )&lt;br /&gt;            {&lt;br /&gt;&lt;br /&gt;            // get field values&lt;br /&gt;            nodField = objXMLDOM.selectSingleNode('//lastname');&lt;br /&gt;            if (nodField != null)&lt;br /&gt;               strTimekeepName = nodField.firstChild.nodeValue;&lt;br /&gt;&lt;br /&gt;            nodField = objXMLDOM.selectSingleNode('//firstname');&lt;br /&gt;            if (nodField != null)&lt;br /&gt;               strTimekeepName = strTimekeepName + ', ' + nodField.firstChild.nodeValue;&lt;br /&gt;&lt;br /&gt;            // update timekeeper&lt;br /&gt;            this.lastvalue = this.value;&lt;br /&gt;&lt;br /&gt;            }&lt;br /&gt;         // if XML DOM object wasn't returned&lt;br /&gt;         else&lt;br /&gt;            {&lt;br /&gt;&lt;br /&gt;            // indicate timekeeper was not found&lt;br /&gt;            strTimekeepName = 'Timekeep \'' + this.value + '\' was not found.';&lt;br /&gt;&lt;br /&gt;            // update timekeeper&lt;br /&gt;            this.lastvalue = '';&lt;br /&gt;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;         // update document&lt;br /&gt;         UpdateElementText( this.label, strTimekeepName );&lt;br /&gt;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;   // if there was no input&lt;br /&gt;   else&lt;br /&gt;      {&lt;br /&gt;&lt;br /&gt;      // clear the timekeep and display&lt;br /&gt;      this.lastvalue = '';&lt;br /&gt;      UpdateElementText( this.label, '' );&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;   // process default action&lt;br /&gt;   return true;&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;//&lt;br /&gt;// txtTimekeeper_change&lt;br /&gt;// ----------------------------------------------------------------------------&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 14 Jul 2006 22:28:13 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2278</guid>
      <author>Will_Rickards (Will Rickards)</author>
    </item>
  </channel>
</rss>
