Help with on click on mobile <select> tag

Help with on click on mobile <select> tag

https://youtu.be/0eTAQTmgTC0

This is my problem with the website I am working on for inventory of Magic cards. 
I don't want mobile users to have to click on the option they want twice to get the data to load. If you watch the video you can see what I mean. Here is my code below. 

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <title>
  5. Magic Inventory
  6. </title>
  7.   <meta charset="utf-8">
  8. <link rel="stylesheet" type="text/css" href="css/table.css">
  9. <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
  10. <link rel="stylesheet" type="text/css" href="css/bootstrap-theme.min.css">
  11. <link rel="stylesheet" type="text/css" href="css/Style.css">
  12. <link rel="stylesheet" type="text/css" href="css/table.css">
  13. <script type='application/javascript' src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

  14. <style>
  15. tr.foilInStock{
  16. background-color: #9AD8ED;
  17. }
  18. tr.outOfStock{
  19. background-color: #C4C4C4;
  20. }
  21. .table_margin {
  22. margin-top: 3em
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <div class="container">
  28. <div class="row">
  29. <div class="leftNavDiv col-md-3">
  30.    <h1>Search</h1>
  31.    <input type="text" id="inputText-cardNameSearchTextBox-leftNavDiv" placeholder="Spore Frog" style="width:260px;" class="form-control"/><br />
  32.    <select id="select-cardListSelector-leftNavDiv" size="10" style="height:200px; width:260px;" class="form-control"></select><br />
  33. </div>
  34. <div class="bodyDiv col-md-9">
  35. <table id="div-cardsDisplayTable-bodyDiv" data--tbody-cardlist-bodydiv="" class="table table-bordered table_margin">
  36. <thead>
  37. <tr>
  38. <th>Name</th>
  39. <th>Set</th>
  40. <th>Quantity</th>
  41. </tr>
  42. </thead>
  43. <tbody data--tbody-cardlisttablebody-bodydiv="" id="div-cardsDisplayTableBody-bodyDiv">
  44. </tbody>
  45. </table>
  46. </div>
  47. </div>
  48. </div>

  49. <script>
  50. // ToC: search
  51.     /* ---------------------------
  52.         
  53.         A) UI Functionality:
  54.             1. cardNameSearchTextbox_keyup
  55.             2. cardNameUL_Populate
  56.             3. cardNameSelected
  57.     
  58.         B) Event Listeners:
  59.             1. card name selected

  60.         C) Global:
  61.             1. This function is for the delay of when a user is typing in the card name box before it ajax searches

  62.         D) Document Ready:
  63.             1. card search text box, seeking keystrokes
  64.             2. prevent "Enter" keystroke from submitting in text input

  65.     */

  66.  /////////////////////////////////////////////////////////////////////// A
  67. // [A] UI Functionality ///////////////////////////////////////////////  A
  68. //////////////////////////////////////////////////////////////////////   A

  69. //
  70. /*--------------------------------------
  71. Updates:
  72. 1/24/17:
  73. -Added á/Æ/â to Unescape
  74. */
  75. //

  76. function htmlUnescape(value) {
  77.     return String(value)
  78.         .replace(/quot;/g, '"')
  79.         .replace(/&#39;/g, "'")
  80.         .replace(/u0026#39;/g, "'")
  81.         .replace(/&lt;/g, '<')
  82.         .replace(/&gt;/g, '>')
  83.         .replace(/&amp;/g, '&')
  84. .replace(/u0026#225;/g, 'á')
  85. .replace(/u0026#198;/g, 'Æ')
  86. .replace(/u0026#226;/g, 'â')
  87.         .replace(/u0026amp;/g, '&');
  88. }

  89. // [A.1] cardNameSearchTextbox_keyup
  90.     /* 
  91.     This calls the delay function and will result in the cardNameUL_Populate function being called after the delay has passed.
  92.     */
  93.     function cardNameSearchTextbox_keyup () {

  94.         delay(function () {

  95.             if ($('#inputText-cardNameSearchTextBox-leftNavDiv').val().length > 2) {

  96.                 cardNameUL_Populate();

  97.             } else {

  98.                 $('#select-cardListSelector-leftNavDiv').empty();
  99.             };
  100.         }, 500);
  101.     };

  102. // [A.2] cardNameUL_Populate 
  103.     /* 
  104.     This function gets called to populate the list of cards for search
  105.     */
  106.     function cardNameUL_Populate () {

  107.     // ajax
  108.         $.ajax({
  109.             type: "POST",
  110.             url: "127.0.0.1/WebService.asmx/loadCardsBySearch",
  111.             data: '{search: "' + $('#inputText-cardNameSearchTextBox-leftNavDiv').val() + '"}',
  112.             contentType: "application/json; charset=utf-8",
  113.             dataType: "json",
  114.             success: function (response) {
  115.   
  116.                 var JSONresponse = JSON.stringify(response).substring(6, JSON.stringify(response).length - 2);

  117.             // error check
  118.                 if (JSONresponse.substring(0, 5) == "Error") {

  119.                 } else if (JSONresponse == "") {

  120.             // if no errors
  121.                 } else {
  122.                     
  123.                     JSONresponse = JSONresponse.replace(/\\/g, '');
  124.                     var jsonObject = $.parseJSON(JSONresponse);
  125.                     
  126.                     $('#select-cardListSelector-leftNavDiv').empty()

  127.                     $.each(jsonObject, function (i, obj) {

  128.                         $('#select-cardListSelector-leftNavDiv')

  129.                         .append($('<option>', { value: htmlUnescape(obj.cardName), text: htmlUnescape(obj.cardName) }));

  130.                     }); // end $.each
  131.                 };      // end if
  132.             },        // end success

  133.             failure: function (msg) {
  134.                 alert(msg);
  135.             }, // end failure

  136.             complete: function (jqXHR, textStatus) {
  137.                 // alert('complete')
  138.             }

  139.         }); // end $.ajax
  140.     };

  141. // [A.3] cardNameSelected
  142.     /*

  143.     */
  144.     function cardNameSelected (cardName) {
  145.     // clear table of previously loaded information
  146.         $('[data--tbody-cardlisttablebody-bodydiv]').empty();

  147.         $.ajax({
  148.             type: "POST",
  149.             url: "127.0.0.1/WebService.asmx/loadCardDetailsByCardName",
  150.             data: '{cardName: "' + cardName + '"}',
  151.             contentType: "application/json; charset=utf-8",
  152.             dataType: "json",

  153.             success: function (response) {

  154.                 var JSONresponse = JSON.stringify(response).substring(6, JSON.stringify(response).length - 2);

  155.             // error check
  156.                 if (JSONresponse.substring(0, 5) == "Error") {

  157.                 } else if (JSONresponse == "") {

  158.             // if no errors
  159.                 } else {
  160.                     
  161.                     JSONresponse = JSONresponse.replace(/\\/g, '');
  162.                     var jsonObject = $.parseJSON(JSONresponse);

  163.                 // display information into table for user
  164.                     $(function () {
  165.                         $.each(jsonObject, function (i, obj) {

  166.                         // convert 'is foil' response from numerical to 'True/False' phrase
  167.                             var cardNameFormatted = cardName;
  168.                             if (obj.isFoil == "True") {

  169.                                 cardNameFormatted = cardName + " (Foil)";
  170.                             };

  171.                         // create row, loading data-tags & table cells with the information
  172.                             var $tr = '<tr ';
  173. if ((obj.isFoil == "True") && (parseInt(obj.cardQuantity) > 0)) {

  174. $tr += 'class="foilInStock"';
  175. }
  176. else if (parseInt(obj.cardQuantity) == 0){
  177. $tr += 'class="outOfStock"';
  178. };
  179. $tr += '>' +

  180.                                 // card Name
  181.                                     '<td>' + cardNameFormatted + '</td>' +
  182. // card Set
  183.                                     '<td style="text-align:center">' + htmlUnescape(obj.setName) + '</td>' +
  184.                                 // card Quantity
  185.                                     '<td>' + obj.cardQuantity + '</td></tr>';
  186.                                 
  187.                         // display row, to table
  188.                             $('#div-cardsDisplayTableBody-bodyDiv').append($tr);

  189.                         }); // end $.each

  190.                     });     // end function
  191.                 };          // end if
  192.             },              // end success

  193.             failure: function (msg) {
  194.             },  //end failure

  195.             complete: function (jqXHR, textStatus) {
  196.             }   // end complete

  197.         });     // end $.ajax
  198.     };

  199.  /////////////////////////////////////////////////////////////////////// B
  200. // [B] Event Listeners ////////////////////////////////////////////////  B
  201. //////////////////////////////////////////////////////////////////////   B

  202. // [B.1] card name selected
  203.     /*

  204.     */
  205.     $('#select-cardListSelector-leftNavDiv').on("click vclick", function () {
  206.         // check that card selected isn't the same card already loaded
  207.         cardNameSelected($('#select-cardListSelector-leftNavDiv').val());
  208.     });

  209.  /////////////////////////////////////////////////////////////////////// C
  210. // [C] Global /////////////////////////////////////////////////////////  C
  211. //////////////////////////////////////////////////////////////////////   C

  212. // [C.1] This function is for the delay of when a user is typing in the card name box before it ajax searches
  213.     /*

  214.     */
  215.     var delay = (function () {
  216.         var timer = 0;
  217.         return function (callback, ms) {
  218.             clearTimeout(timer);
  219.             timer = setTimeout(callback, ms);
  220.         };
  221.     })();

  222.  /////////////////////////////////////////////////////////////////////// D
  223. // [D] Document Ready//////////////////////////////////////////////////  D
  224. //////////////////////////////////////////////////////////////////////   D

  225. $(document).ready(function () {
  226.     
  227. // [D.1] card search text box, seeking keystrokes
  228.     /*

  229.     */
  230.     $('#inputText-cardNameSearchTextBox-leftNavDiv').on('keyup', cardNameSearchTextbox_keyup);


  231. // [D.2] prevent "Enter" keystroke from submitting in text input
  232.     /*
  233.     
  234.     */
  235.     $("#inputText-cardNameSearchTextBox-leftNavDiv").bind("keypress", function (e) {
  236.         if (e.keyCode == 13) {
  237.             return false;
  238.         }
  239.     });

  240. }); //document.ready
  241. </script>

  242. </body>
  243. </html>