Вы нацелены не на тот элемент в jquery. Если вы хотите изменить значение текстового поля при изменении выпадающего списка, вам нужно настроить таргетинг на этот выбор. Измените целевой элемент с .aircraft_id
на .aircraftsName
в этой строке $(document).on('change', '.aircraftsName', function() {
.
Кроме того, вам не нужно звонить на контроллер. Вы можете поместить aircraft_id
в качестве значения в выпадающем списке. Обновление способа создания выпадающего списка для чего-то подобного может работать:
<select name="aircraft_name" class="aircraftsName">
<option value="0" disabled="true" selected="true"> Select </option>
@foreach ($aircrafts as $aircraft)
<option value="{{ $aircraft->aircraft_id }}">{{ $aircraft->aircraft_registration_number }}</option>
@endforeach
</select>
Тогда ваш jquery может быть таким простым:
$(document).ready(function() {
$(document).on('change', '.aircraftsName', function() {
var air_id = $('.aircraftsName').val(); // get id the value from the select
$('.aircraft_id').val(air_id); // set the textbox value
// if you want the selected text instead of the value
// var air_text = $('.aircraftsName option:selected').text();
});
});
Если вы хотите использовать ajax-вызов, я немного обновил код:
$(document).ready(function() {
$(document).on('change', '.aircraftsName', function() {
var air_id = $(this).val();
var a = $(this).parent();
console.log("Its Change !");
var op = "";
$.ajax({
type: 'get',
url: '/admin/settings/findAirName',
data: { 'id': air_id },
dataType: 'json', //return data will be json
success: function(data) {
// console.log("price");
console.log(data.registred_company_name);
a.find('.aircraft_id').val(data.aircraft_id);
// do you want to display id or registration name?
},
error:function(){
}
});
});
});
Это может приблизить вас. Поскольку это запрос get
, вы можете добавить идентификатор к URL и не использовать параметр данных: url: '/admin/settings/findAirName?id=' + air_id;
, но не включать строку data: {id: air_id}
.