测试表行中的空文本输入

时间:2017-10-08 15:46:26

标签: php jquery codeigniter

我有一个bootstrap模式,如果有要显示的数据行,我会使用db中的数据填充。 (名字,姓氏,班级等级)。

我可以在保存数据之前添加和删除行 我希望能够从表中收集数据行并创建一个数据对象,我可以在保存时传递给后端。我到目前为止的代码如下:

HTML

<?php foreach ($athletes as $i => $row) { ?>
        <?php $i == 0 ? $rownum = 1 : $rownum = $i+1; ?>
        <tr id="<?php echo $i; ?>">
          <td><?php echo $rownum; ?><input type="hidden" name="data[id]" value="<?php echo $row['id']; ?>" ></td>
          <td><input type='text' name="data[first_name]" class="form-control" value="<?php echo $row['first_name']; ?>" ></td>
          <td><input type='text' name="data[last_name]" class="form-control" value="<?php echo $row['last_name']; ?>" ></td>
          <td><input type='text' name="data[classrank]" class="form-control" value="<?php echo $row['class']; ?>" ></td>
          <td><button type="button" id="remScnt" class="btn btn-default">Remove Row</button></td>
        </tr>
    <?php } } ?>

jQuery保存功能

$("button#saveaths").click(function() {
  var user_id = $("#user_id").val();
  var ath_data = [];
  $("tr").each(function() {

      if (data[first_name] != '') {
        ath_data.push(this.data[first_name]);
        ath_data.push(this.data[last_name]);
        ath_data.push(this.data[classrank]);
        ath_data.push(user_id);
      }
  });
});

我在if语句中收到错误。

在这个阶段,我只是尝试构建我可以传递给codeigniter控制器的数据对象,以便插入到我的数据库中。

此外,如果有更好的方法,我愿意接受建议。

提前致谢!

1 个答案:

答案 0 :(得分:1)

您没有使用正确的语法来获取字段的值。

试试这个

$("button#saveaths").on("click",function() {
  var userID = $("#user_id").val();
  var ath_data = [];
  $("tr").each(function() {
    var firstName = $(this).find("[name=data[first_name]]").val();
    if (firstName != '') {
      var lastName = $(this).find("[name=data[last_name]]").val(),
          classRank = $(this).find("[name=data[classrank]]").val();
      ath_data.push({firstName:firstName,lastName:lastName,classRank:classRank,userID:userID});
    }
  });
  if (ath_data.length>0) {
    $.ajax({ 
      type="POST",
      url:"someServerProcess.php",
      data: JSON.stringify(ath_data),
      contentType: "application/json"
    });
  }
});