防止比较列

时间:2018-03-15 08:47:04

标签: javascript jquery html

我有一个包含三列的表:a,b和c。上面的代码适用于a,b和c列。第三列给出了未定义的值。我想阻止此列进行比较,即如果我在列a和b中输入值并按原样保留列c,则应保存数据。怎么做到这一点?

function saving(id) {
  var store;

  $('#mt .tb tr td').each(function() {
    var value = $(this).find("input").val();

    if (value === '' || value == null || value == " ")
      store == "0";
    else
      store == "1";
  });

  if (store = "0") {
    alert("empty rows cannot be saved")

    return false;
  } else
    return true;

  alert("saving successful")
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="mt">
  <tr>
    <thead>
      <th>a</th>
      <th>b</th>
      <th>c</th>
    </thead>
  </tr>
  <tr>
    <tbody class="tb">
      <td><input id="a"></td>
      <td><input id="b"></td>
      <td><i class="fa fa-pencil Addbtn"></i></td>
    </tbody>
  </tr>
  <input type="submit" value="Save" onclick="return saving()">
</table>

1 个答案:

答案 0 :(得分:1)

您可以将类添加到您不想比较的列

<td class='nocompare'> 

并排除那些

$('#mt .tb tr td:not(.nocompare)').each 

(或者您可以将compare添加到您想要比较的内容,以删除双重否定。

代码还存在一些其他基本问题:

  • 设置值使用=而非==store == 0
  • 比较值使用==(或===)而不是=if (store = 0)
  • 在最后一次返回之后有一个警告
  • 通过设置store = 1,您的检查只需要最后一列有一个值,如果之前的所有列都失败,则会通过。

对于上一期,你可以加上所有通行证的计数,并与应该有多少通过进行比较,例如:

var pass = 0;
$('#mt .tb tr td.check').each(function() {
    var value = $(this).find("input").val();
    if (value === '' || value == null || value == " ")
       ; // fail
    else
       pass++;
});

if (pass == $('#mt .tb tr td.check').length))
    // all passed

或者你可以带一点标志和AND它如下。

&#13;
&#13;
function saving(id) {
  var store = 1;

  $('#mt .tb tr td.check').each(function() {
    var value = $(this).find("input").val();

    if (value === '' || value == null || value == " ")
      store = 0;
    else
      store = store & 1;
  });

  if (store == "0") {
    alert("empty rows cannot be saved")
    return false;
  } else {
    alert("saving successful")
    return true;
  }
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="mt">
  <tr>
    <thead>
      <th>a</th>
      <th>b</th>
      <th>c</th>
    </thead>
  </tr>
  <tr>
    <tbody class="tb">
      <td class='check'><input id="a"></td>
      <td class='check'><input id="b"></td>
      <td><i class="fa fa-pencil Addbtn"></i></td>
    </tbody>
  </tr>
  <input type="submit" value="Save" onclick="return saving()">
</table>
&#13;
&#13;
&#13;