【问题标题】:Display the amount of the product based on the first select box根据第一个选择框显示产品的金额
【发布时间】:2018-03-21 02:44:27
【问题描述】:

我无法根据我在初始选择框中选择的内容来显示产品的数量。我只有 1 个名为 products 的表,它包含 id、name、amount 列。

product.blade.php

<td>
 <select name="product">
    <option selected="true" disabled="true">Products</option>
     @foreach($products as $id => $p)
        <option value="{!!$id!!}">{!!$p!!}</option>
     @endforeach
 </select>
</td>
<td>
    <input id="amount" type="text" name="amount" class="form-control 
    required" value=""/>
</td>

javascript

 $('#product').on('change', function () {
        var productid=$(this).val();
        var a=$(this).parent();
        var op="";
        $.ajax({
            type:'get',
            url:'{!!URL::route('getAmount')!!}',
            data:{'id':productid},
            dataType:'json',
            success:function(data){
                console.log(data.amount);
                a.find('#amount').val(data.amount);
            },
            error:function(){
            }
        });
    });

控制器

public function getProducts()
{
  $products = Product::lists('name', 'id', 'amount');
  return view('product', compact('products');
}

public function getAmount(Request $request){

  $product=Product::select('amount')->where('id',$request->id)->first();

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

路线

Route::get('product', ['as' => 'product',
        'uses' => 'ProductController@getProducts']);
Route::get('/product/getAmount', ['as' => 'getAmount',
        'uses' => 'ProductController@getAmount']);

我只是想在旁边的输入框中显示产品的数量。

【问题讨论】:

    标签: javascript jquery html mysql laravel


    【解决方案1】:

    执行 ajax 请求对我来说似乎毫无用处,将数据属性添加到选项会不会更容易。

    <td>
        <select id="products" name="product">
            <option selected="true" disabled="true">Products</option>
            @foreach($products as $id => $p)
                <option data-amount="{{ $p->amount }}" value="{{ $id }}">{{ $p }}</option>
            @endforeach
         </select>
    </td>
    <td>
        <input id="amount" type="text" name="amount" class="form-control required" value=""/>
    </td>
    

    然后在选择更改时添加一些javascript或jquery来填充输入。

    $("#products").change(function() {
        $("#amount").val($("#products option:selected").data("amount"))
    })
    

    另外,注意你在哪里使用 {!! !!} 因为你可能引入了你绝对不想要的 XSS。

    【讨论】:

    • 您好,我遵循了您的代码,但它向我抛出了试图获取非对象属性的错误。也许我错过了什么。
    • 啊,我知道我打错了$p-&gt;ammount 应该是$p-&gt;amount
    • 好的,我改了,它不再显示任何错误但金额输入框仍然没有更新。它仍然是空白的。
    • 如果您在 onChange 中控制台登录 $("#products option:selected").data("amount"),控制台会显示什么?
    猜你喜欢
    • 1970-01-01
    • 2017-01-04
    • 2021-12-09
    • 2021-03-26
    • 2022-01-18
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    相关资源
    最近更新 更多