<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: keypress code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Fri, 29 Aug 2008 00:40:15 GMT</pubDate>
    <description>DZone Snippets: keypress code</description>
    <item>
      <title>Javascript: Preventing Form Submit When Enter is Pressed</title>
      <link>http://snippets.dzone.com/posts/show/2272</link>
      <description>In a web page, normally pressing enter when any form element has focus will submit the form.  This is often premature.  When you have a checkbox selected you probably just want to check the checkbox, not submit the form.  So I wrote some javascript to translate the enter into a tab when possible (IE) and prevent the form submit when translation isn't possible (non-IE).&lt;br /&gt;&lt;br /&gt;First is the code in your onload event handler.&lt;br /&gt;This sets up onkeydown if window.event is supported (IE) and onkeypress if not.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var frmRequest = document.getElementById('frmRequest');&lt;br /&gt;if (frmRequest)&lt;br /&gt;   {&lt;br /&gt;   if (window.event)&lt;br /&gt;      frmRequest.onkeydown = frmRequest_KeyDown;&lt;br /&gt;   else&lt;br /&gt;      frmRequest.onkeypress = frmRequest_KeyPress;&lt;br /&gt;   }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Next are the actual event handlers.&lt;br /&gt;Nothing really special here, just dealing with the different ways of accessing event properties.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;// ----------------------------------------------------------------------------&lt;br /&gt;// frmRequest_KeyDown&lt;br /&gt;//&lt;br /&gt;// Description: event handler for request form key down event&lt;br /&gt;//    translates returns on option buttons to a tab&lt;br /&gt;//    this works only for IE, the keypress event is used for other browsers&lt;br /&gt;//&lt;br /&gt;// Arguments : &lt;br /&gt;//    e - the event object&lt;br /&gt;//&lt;br /&gt;// Dependencies : none&lt;br /&gt;//&lt;br /&gt;// History :&lt;br /&gt;// 2006.07.13 - WSR : adapted to this project&lt;br /&gt;//&lt;br /&gt;function frmRequest_KeyDown( e )&lt;br /&gt;   {&lt;br /&gt;&lt;br /&gt;   var numCharCode;&lt;br /&gt;   var elTarget;&lt;br /&gt;   var strType;&lt;br /&gt;&lt;br /&gt;   // get event if not passed&lt;br /&gt;   if (!e) var e = window.event;&lt;br /&gt;&lt;br /&gt;   // get character code of key pressed&lt;br /&gt;   if (e.keyCode) numCharCode = e.keyCode;&lt;br /&gt;   else if (e.which) numCharCode = e.which;&lt;br /&gt;&lt;br /&gt;   // get target&lt;br /&gt;   if (e.target) elTarget = e.target;&lt;br /&gt;   else if (e.srcElement) elTarget = e.srcElement;&lt;br /&gt;                                              &lt;br /&gt;   // if form input field&lt;br /&gt;   if ( elTarget.tagName.toLowerCase() == 'input' )&lt;br /&gt;      {&lt;br /&gt;&lt;br /&gt;      // get type&lt;br /&gt;      strType = elTarget.getAttribute('type').toLowerCase();&lt;br /&gt;&lt;br /&gt;      // based on type&lt;br /&gt;      switch ( strType )&lt;br /&gt;         {&lt;br /&gt;         case 'checkbox' :&lt;br /&gt;         case 'radio' :&lt;br /&gt;         case 'text' :&lt;br /&gt;&lt;br /&gt;            // if this is a return - change to tab&lt;br /&gt;            if ( numCharCode == 13 )&lt;br /&gt;               {&lt;br /&gt;               if (e.keyCode) e.keyCode = 9;&lt;br /&gt;               else if (e.which) e.which = 9;&lt;br /&gt;               }&lt;br /&gt;&lt;br /&gt;            break;&lt;br /&gt;            &lt;br /&gt;         }&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;// frmRequest_KeyDown&lt;br /&gt;// ----------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// ----------------------------------------------------------------------------&lt;br /&gt;// frmRequest_KeyPress&lt;br /&gt;//&lt;br /&gt;// Description: event handler for request form key press event&lt;br /&gt;//    cancels returns on form elements that would prematurely submit the form&lt;br /&gt;//&lt;br /&gt;// Arguments : &lt;br /&gt;//    e - the event object&lt;br /&gt;//&lt;br /&gt;// Dependencies : none&lt;br /&gt;//&lt;br /&gt;// History :&lt;br /&gt;// 2006.07.13 - WSR : adapted to this project&lt;br /&gt;//&lt;br /&gt;function frmRequest_KeyPress( e )&lt;br /&gt;   {&lt;br /&gt;&lt;br /&gt;   var numCharCode;&lt;br /&gt;   var elTarget;&lt;br /&gt;   var strType;&lt;br /&gt;&lt;br /&gt;   // get event if not passed&lt;br /&gt;   if (!e) var e = window.event;&lt;br /&gt;&lt;br /&gt;   // get character code of key pressed&lt;br /&gt;   if (e.keyCode) numCharCode = e.keyCode;&lt;br /&gt;   else if (e.which) numCharCode = e.which;&lt;br /&gt;&lt;br /&gt;   // get target&lt;br /&gt;   if (e.target) elTarget = e.target;&lt;br /&gt;   else if (e.srcElement) elTarget = e.srcElement;&lt;br /&gt;                                              &lt;br /&gt;   // if form input field&lt;br /&gt;   if ( elTarget.tagName.toLowerCase() == 'input' )&lt;br /&gt;      {&lt;br /&gt;&lt;br /&gt;      // get type&lt;br /&gt;      strType = elTarget.getAttribute('type').toLowerCase();&lt;br /&gt;&lt;br /&gt;      // based on type&lt;br /&gt;      switch ( strType )&lt;br /&gt;         {&lt;br /&gt;         case 'checkbox' :&lt;br /&gt;         case 'radio' :&lt;br /&gt;         case 'text' :&lt;br /&gt;&lt;br /&gt;            // if this is a return&lt;br /&gt;            if ( numCharCode == 13 )&lt;br /&gt;               {&lt;br /&gt;               // cancel event to prevent form submission&lt;br /&gt;               return false;&lt;br /&gt;               }&lt;br /&gt;&lt;br /&gt;            break;&lt;br /&gt;            &lt;br /&gt;         }&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;// frmRequest_KeyPress&lt;br /&gt;// ----------------------------------------------------------------------------&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 13 Jul 2006 20:48:33 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2272</guid>
      <author>Will_Rickards (Will Rickards)</author>
    </item>
  </channel>
</rss>
