Проблемы, возникающие при нажатии на <select>

У меня проблемы с совместимостью. Мне нужно обновить код на лету. Когда вы нажимаете на <select> Элемент, он выполняет некоторые вызовы на сервер, используя AJAX, чтобы обновить все <option> элементы. Моя проблема, однако, в IE (тестирование 11), когда вы наводите курсор на любой из параметров, это похоже на то, что функция снова работает. Это фрагмент того, что у меня есть:

j$('select[name=vessel]').click(function(e) {
    var tour_ID   = j$('select[name=tour]').val();
    var trip_Date = j$('input[name=trip_Date]').val();
    var ve_ID     = j$('select[name=vessel] option:selected').val();  //Grab option user selected
    fetch_Vessel(tour_ID, trip_Date, ve_ID, "main_Tour"); //AJAX magic
});

<select class="form-control" name="vessel">
    <option value="-1">-- Please Select --</option>
    <?php
        $vessel_query = mysqli_query($conn,'SELECT * FROM Vessel')
            or die("Error: ".mysqli_error($conn));  
        while($vessel_Results = mysqli_fetch_array($vessel_query)){
            if($vessel_Results ['ve_ID'] == $ve_ID){
                echo '<option selected value="'.$vessel_Results['ve_ID'].'">'.$vessel_Results['vessel_Name'].'</option>';
            }
            else{
                echo '<option value="'.$vessel_Results['ve_ID'].'">'.$vessel_Results['vessel_Name'].'</option>';
            }
        }
    ?>
</select>

function fetch_Vessel(tour_ID, trip_Date, ve_ID, tour_Type){
        if( tour_ID > 0 && trip_Date != null ){ //If a tour and date is selected, continue on
            //Store in array what to send over to PHP file
            var data = {
              "action": "Count_Vessels", //what function to call
              "trip_Date": trip_Date, //Pass into function
              "tour_ID":tour_ID //Pass into function
            };
            data = j$(this).serialize() + "&" + j$.param(data); //serialize 
            j$.ajax({
              type: "POST",
              dataType: "json",
              url: "../include/booking_Modify.php", //Relative or absolute path to response.php file
              data: data,
              success: function(data) {
                  if( tour_Type == "main_Tour"){
                      j$('select[name=vessel]').children('option').remove(); //Remove all <option> elements
                      j$('select[name=vessel]').html(data["vessel_Test"]); //Add new <option> elements
                      j$('select[name=vessel] option').each(function(index, element) {
                          /* Loop through all options and find the value. If it matched what the user selected
                         * set the property to selected
                         */  
                        if( j$(this).val() == ve_ID ){
                            j$(this).prop('selected', true);
                        }
                      });
                  }

              },
              error: function (request) {
                console.log(request.responseText);
                console.log("SQL: " + request["SQL"]);
            }
            });
        }
    }

Я думал, что.click() будет означать, что он будет срабатывать только один раз, но я подозреваю, что он будет срабатывать более одного раза, когда я наведусь на <option> элемент

Чего я хочу добиться - это запускать.click() только один раз, когда выбрана опция выбора или вкладка. Любая помощь будет принята с благодарностью

0 ответов

Другие вопросы по тегам