在表加载时将所有负-1值设置为0

时间:2016-07-23 20:29:44

标签: jquery html

当表格加载时,我想将-1的所有值设置为0 ...
我尝试了下面的代码,但它没有用。

添加了代码段,即使建议无效......



$(document).ready(function() {
  alert("bothSexes");
  $('#error-ageGroup tbody').each(function() {
    var row = $(this).closest("tr");
    var bothSexes = row.find(".bothSexesError2").val();
    alert(bothSexes);
    var femaleErorr = row.find(".femaleSexesError2").val();
    var MaleError = row.find(".maleSexesError2").val();
    if (bothSexes === -1) {
      row.find(".bothSexesError2").val(0);
    }
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="error-ageGroup" class="table table-bordered table-striped dataTable">
  <thead class="heading">
    <tr>
      <th>Location</th>
      <th>Age Group</th>
      <th class="centerTD">Both Sex</th>
      <th class="centerTD">Male Count</th>
      <th class="centerTD">Female Count</th>
    </tr>
  </thead>
  <tbody class="whitebg">
    <tr>
      <td class='bothSexesError bothSexesError2'>
        <input class="centerTD" name="bothSexesError" type="text" value="-1" readonly/>
      </td>
      <td class='maleSexesError maleSexesError2'>
        <input class="centerTD" name="maleError" type="text" value=" -1" />
      </td>
      <td class='femaleSexesError femaleSexesError2'>
        <input class="centerTD" name="femaleError" type="text" value="-1" />
      </td>
    </tr>
  </tbody>
</table>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:2)

请注意,val()返回一个字符串,但您将其与整数进行比较。您需要将两者都转换为相同的数据类型:

if (parseInt(bothSexes, 10) === -1) { // or (bothSexes === "-1")
    row.find("#bothSexesError").val(0);
}

或使用类型不敏感的比较,其中类型被自动强制匹配:

if (bothSexes == -1) { // note '=='. The string will be coerced to a Number for you
    row.find("#bothSexesError").val(0);
}
个人我会使用前者,因为后者偶尔会导致意想不到的结果。

更新

现在你已经添加了HTML,我可以看到这里有几个问题。

  • 您有重复的id属性。如果不需要,您应该将它们更改为类或完全删除它们。
  • 您的代码位于load()事件处理程序中,由于您已经在document.ready处理程序中运行,因此该代码是多余的,并且该元素不是imgiframe
  • 根据我上面提到的比较方法,您可以在值周围留出额外的空间。删除空格。

这是一个包含所有上述修复的工作示例:

Working example