Проблемы, возникающие при нажатии на <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() только один раз, когда выбрана опция выбора или вкладка. Любая помощь будет принята с благодарностью