【问题标题】:Save multiple checkbox values to sql database将多个复选框值保存到 sql 数据库
【发布时间】:2019-08-27 10:44:54
【问题描述】:

我有一个 html 表单,其中还有复选框。复选框的值通过 Web Api 来自 SQL 数据库。

$(document).ready(function () {
  var $MaterialName = $('#materiallist');  

  function addMaterials(material) {
    $MaterialName.append('<input type="checkbox" >' + material.MaterialName + ' </input>');
  }
<div class="form-group">
  <label for="material" class="col-xs-3 control-label header">Käytetyt materiaalit</label>
  <div class="col-xs-7">
    <div class="checkbox" id="materiallist"></div>
  </div>
</div>            

我想将这些检查的值与该表单中的其他输入值一起保存到另一个 SQL 数据库(名为 Form)。

我还没有找到所有其他输入字段也需要保存的解决方案,只有复选框和按钮的解决方案。此外,我的值来自数据库,不是“硬编码”选项。

我试过了:

function getCheckedMaterials() {
  var materialArray = [];
  $("#materiallist input:checked").each(function () {
    materialArray.push($(this).val());
  });
  var selected;
  selected = materialArray.join(',');
  alert("You have selected " + selected);
}

这不能按我的需要工作,因为我无法获取值。

当我按下#tallenna 按钮时,来自其他输入字段的所有这些值都会进入表单数据库。我需要将选中的值作为文本保存在 MaterialName 中。

$('#tallenna').click(function () {
  var form = {
    FormFiller: $FormFiller.val(),
    CustomerContact: $CustomerContact.val(),
    ReadyToDate: $ReadyToDate.val(),
    Instructions: $Instructions.val(),
    Amount: $Amount.val(),
    PcsAmount: $PcsAmount.val(),
    ChargeFull: $ChargeFull.val(),
    ChargeByPcs: $ChargeByPcs.val(),
    FreightCost: $FreightCost.val(),
    CustomerName: $CustomerName.val(),
    WorkName: $WorkName.val(),
    MaterialName: getCheckedMaterials // ???? 
  };

【问题讨论】:

    标签: jquery html sql checkbox asp.net-web-api2


    【解决方案1】:

    您似乎在询问如何将数据从函数返回到属性。因此,在函数中添加 return 语句,并通过在函数名称末尾添加 () 从属性中调用它,如下所示:

    function getCheckedMaterials() {
      var materialArray = $("#materiallist input:checked").map(function () {
        return this.value;
      }).get();
      return materialArray.join(',');
    }
    
    $('#tallenna').click(function (e) {
      e.preventDefault();
      var form = {
        // other properties...
        MaterialName: getCheckedMaterials()
      };
    
      // send 'form' in an AJAX request here...
    });
    

    我建议从函数中返回纯 materialArray 数组,并在 AJAX 请求中将其发送到 WebAPI 端点。这样您就可以将其模型绑定到string[]IEnumerable&lt;string&gt;,这样更易​​于使用。

    【讨论】:

    • 将值“打开”到数据库。如何获取数据库中复选框的“名称”?这是最初的问题。
    • value 属性添加到复选框HTML $MaterialName.append('&lt;input type="checkbox" value="' + material.MaterialName + '"&gt;' + material.MaterialName + ' &lt;/input&gt;');
    • 现在我的数据库中有“foo”,而不是材料名称。 MaterialNames 来自数据库,我无法为每种材料赋予价值。还有其他想法如何判断该值与 MaterialName 相同吗?
    • 所以把变量放到value..?我已经为你编辑了。
    猜你喜欢
    • 2021-12-07
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多