Laravel&Ajax,Jquery-文本框的选择下拉列表的输入值

时间:2019-01-10 01:23:48

标签: javascript jquery ajax laravel laravel-5

如何获得此输出?

enter image description here

我想要一个动态下拉菜单,例如当我在下拉菜单中选择一个值时,该文本框应该自动用其连接的值填充

这是我的数据库值示例

enter image description here

例如,我在选择下拉列表中选择123,然后文本框必须自动填充3,我该怎么做?

这是我的代码,不能正常工作。

查看

       <span>Aircraft Name</span>
            <select name="aircraft_name" class="aircraftsName">
              <option value="0" disabled="true" selected="true"> Select </option>
              @foreach ($aircrafts as $aircraft)
                  <option value="{{ $aircraft->aircraft_registration_number }}">{{ $aircraft->aircraft_registration_number }}</option>
              @endforeach

            </select>

            <span>Aircraft ID</span>
            <input type="text" class="aircraft_id">

控制器

  public function findPrice(Request $request){


    $p=Product::select('aircrafts')->where('registred_company_name',$request->aircraft_id)->first();

    return response()->json($p);
}

网络

    Route::get('/admin/settings/findAirName','Admin\SettingsController@findAirName');

Ajax和Javascript

<script type="text/javascript">
$(document).ready(function(){
    $(document).on('change','.aircraft_id',function(){
        var air_id =  $(this).val();

        var a = $(this).parent();

        console.log("Its Change !");

        var op = "";

        $.ajax({
            type:'get',
            url:'{!!URL::to('/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.registred_company_name);

            },
            error:function(){

            }
        });



    });
});

2 个答案:

答案 0 :(得分:0)

您在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请求,因此您可以将id附加到url上,而不使用数据参数:url: '/admin/settings/findAirName?id=' + air_id;,但不要包括行data: {id: air_id}

答案 1 :(得分:0)

您可以这样操作:

查看

<span>Aircraft Name</span>
<select id="aircraft_name" name="aircraft_name" class="aircraftsName">
    <option value="0" disabled="true" selected="true"> Select </option>
    @foreach ($aircrafts as $aircraft)
       <option value="{{ $aircraft->id}}">{{ $aircraft->aircraft_registration_number }}</option>
    @endforeach
</select>

<span>Aircraft ID</span>
<input id="aircraft_id" type="text" class="aircraft_id">

//JS
$(document).ready(function(){
  $("#aircraft_name").change(function(){
    var air_id =  $(this).val();
    $("#aircraft_id").val(air_id );
  });
});

我在idselect元素上添加了input