【问题标题】:Cannot pass value to controller while getting input value from javascript从javascript获取输入值时无法将值传递给控制器
【发布时间】:2018-08-10 12:33:09
【问题描述】:

我在 Controller 中获取所有其他输入数据并将它们存储在数据库中,但我在输入字段中有 Total,但我无法在 Controller 中获取该数据。 Total 和其他输入字段之间的区别在于,我使用 javascript 获取 Total。任何我出错的地方,我想我都没有在 Controller 中给出正确的名称

checkout.blade.php

<div class="row">
    {!! Form::open(['route'=>'address.store','method'=>'post'])!!}
        {{ csrf_field() }}

    <tr class="order-total">
    <th>Total</th>
        <td>
            <strong>
                <span class="woocommerce-Price-amount amount">
                <span class="woocommerce-Price-currencySymbol">PKR.
                  <input style="border: none; background-color: #FFFFFF" id="Total" name="Total" disabled title="Total"></span>
                </span>
            </strong>
        </td>
    </tr>
    {!! Form::close() !!}


<script>
      $(document).ready(function(){
          var span_Text = document.getElementById("SubT").innerHTML;
          var del1 = 150;
          var Total=+del1 + +span_Text;
          $("#delivery").html(del1);
          $("#note").html('Note: Delivery Charges will be Rs.150/-');
          $("#Total").val(Total);

          $('#location').change(function(){
              var x = ($(this).val());

              if(x === 'Other'){
                  if(span_Text >= 1500){
                  $('.formx').show();
                  var del2=200;
                  var Total1=+del2 + +span_Text;
                  $("#delivery").html(del2);
                  $("#note").html('Note: All Other Location Delivery Charges will be Rs.200/- and Order must of Rs.1500/-');
                  $("#Total").val(Total1);
                  }
                  else{
                  alert('Order must of Rs.1500/-');
                  $("#note").html('Note: All Other Location Delivery Charges will be Rs.250/- and Order must of Rs.1500/-');

                  }
              }
              else {
                  var Total2=+del1 + +span_Text;
                  $('.formx').hide();
                  $("#delivery").html(del1);
                  $("#note").html('Note: Delivery Charges will be Rs.150/-');
                  $("#Total").val(Total2);

              }
          });
      });
</script>

Controller.php

   public function store(Request $request)
    {
        $this->validate($request,[
            'fname'=>'required',
            'lname'=>'required',
            'Ttl'=>'required',
            'email'=>'required|email',
            'addressline'=>'required',
            'city'=>'required',
            'pro'=>'required',
            'phone'=>'required |regex:/^[0-9\-\+]{9,15}$/',
            'Total'=>'required'
//(0)[0-9]{9}
            //|regex:/^[0-9\-\+]{9,15}$/
        ]);
        Address::create($request->all());

        return redirect('/')->with('valPrev',1);
}

【问题讨论】:

  • 能否在输入的html中添加value="0",并在控制器中做var_dump($request-&gt;get('Total')); die;

标签: javascript laravel laravel-5


【解决方案1】:

问题出在disabled 关键字上,因为禁用的字段没有提交。

因此,您可以将输入设为只读而不是禁用或添加隐藏输入,以便在提交时获得价值:

<span class="woocommerce-Price-currencySymbol">PKR.
      <input readonly style="border: none; background-color: #FFFFFF" id="Total" name="Total" title="Total"></span>
</span>

对于隐藏输入:

<span class="woocommerce-Price-currencySymbol">PKR.
      <input style="border: none; background-color: #FFFFFF" id="Total" disabled title="Total"></span>
      <input type="hidden" id="TotalHidden" name="Total" ></span>
</span>

别忘了更新 JavaScript 代码中的两个字段:

$("#Total").val(Total1);
$("#TotalHidden").val(Total1);
// and other places

【讨论】:

  • 是的,禁用是问题所在。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多