【问题标题】:Pass checkbox value to laravel controller将复选框值传递给 laravel 控制器
【发布时间】:2018-12-15 15:54:54
【问题描述】:

我需要使用 jQuery 获取复选框的值并将其传递给我的 Laravel 控制器,以便我可以将值存储在数据库中。

我需要值为真或假/1或0...不能为空。

如何将复选框值传递给数据库?

这里是复选框:

<input type="checkbox" value="true" name="cats" id="cat" checked>

这是我的脚本,它也可以毫无问题地获取其他值:

function updateExtraFields(fieldName, selector) {
    $('form input[name="' + fieldName + '"]').val($(selector).val());
}

$('#cat').on('click', function() {
    updateExtraFields('cats', '#cat').prop('checked');
 });

$('#dog').on('change', function() {
    updateExtraFields('dogs', '#dog');
});

$('#bird').on('change', function() {
    updateExtraFields('birds', '#bird');
});

//Something else I was trying... $("#cat").attr("checked") ? 1 : 0;

控制器:

$xxxx->table_name()->create([
    'cats' => $request->cats === 'true',
    'dogs' => $request->dogs,
    'birds' => $request->birds,
]);

更新/回答 我最终弄清楚了我的问题。我需要创建一个隐藏字段来传递复选框值,然后我可以存储在我的数据库中

<input type="checkbox" value="" name="cats" id="cat" checked>

<input type="hidden" value="" name="cats" id="hidden_check">

 $(document).ready(function() { 
//Added value on page load
$('#cat').attr('value', '1')
$('#hidden_check').attr('value', '1')

 // Changed value when checked
  $('#cat').on('change', function() {
      if ($(this).is(':checked')) {
    $(this).attr('value', '1');
  } else {
    $(this).attr('value', '0');
  }  

//Sent value to hidden field
    var checkbox_field_value = $(this).val();
    $('#hidden_check').val(checkbox_field_value);
  });
});

此代码对我有用,但如果有更简洁的编写方式,请告诉我。

【问题讨论】:

  • 使用ajax可以发送数据

标签: javascript jquery laravel forms


【解决方案1】:
$xxxx->table_name()->create([
  'cats' => $request->cats == 'true' ? 'true' : 'false',
  'dogs' => $request->dogs,
  'birds' => $request->birds,
]);

如果$request-&gt;cats 等于“真”,则true 将成为cats 的值。如果有任何其他值,它将是false。希望这行得通。

【讨论】:

    【解决方案2】:

    您可以使用 Ajax 将值传递给控制器​​。以下代码演示了如何做到这一点

    var catStatus=$('input[name="cats"]:checked');  // get the value of the checkbox
    
    /*Now make the ajax call*/
    $.ajax({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        url: '/sendcatStatus',
        datatType : 'json',
        type: 'POST',
        data: {
            status: catStatus
        },
        success:function(response) {
            alert(response);
        }
    });
    
    /*Laravel route*/
    Route::post('/sendcatStatus','ControllerName@methodName');
    
    /*Your Contoller Method */
    
    public function methodName(Request $request){
    
        dd($request->input('status'));
    }
    

    我已经为一个复选框显示了这个。同样,您可以使用 ajax 调用来发送多个数据。

    【讨论】:

      猜你喜欢
      • 2016-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 1970-01-01
      相关资源
      最近更新 更多