jQuery .val()返回空字符串

时间:2018-08-10 16:53:07

标签: javascript jquery html

我试图在每次更新列表时对它们的值求和。为此,我有了此功能,该功能在表每次插入或删除行时都会执行,但现在,它只是将值发送到控制台:

function update_price(){
  $("#table-content tr td:nth-child(3)").each(function() {
    console.log($(this).find("div").val());
  });
}

与之关联的HTML代码如下:

<tbody id="table-content">
     <tr class="table-content-line">
        <td>9789898818386</td>
        <td>Fale Menos, Comunique Mais</td>
        <td>
            <div class="form-group">
                <input type="number" data-number-to-fixed="2" data-number-stepfactor="1" class="auto form-control price" value="12" step=".01">
            </div>
        </td>
        <td>2</td>
        <td>
            <span class="remove-action">
                <i class="fa fa-times-circle"></i>
            </span>
        </td>
     </tr>
     ...
</tbody>

出于某种奇怪的原因,当我使用.html()而不是.val()时,它返回给我用户输入的HTML代码,但是当我使用.val()时却没有发生

如果您有任何建议,请告诉我,也许我做错了什么,但我还没有检查。

谢谢,
米基桑塔纳

2 个答案:

答案 0 :(得分:5)

您需要将$(this).find("div").text()$(this).find("div input").val();交换

div实际上不包含任何文本,即使输入在其中也是如此。因此,您必须定位input以获取值

演示

function update_price() {
  $("#table-content tr td:nth-child(3)").each(function() {
    console.log($(this).find("div input").val());
  });
}

update_price();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tbody id="table-content">
    <tr class="table-content-line">
      <td>9789898818386</td>
      <td>Fale Menos, Comunique Mais</td>
      <td>
        <div class="form-group"><input type="number" data-number-to-fixed="2" data-number-stepfactor="1" class="auto form-control price" value="12" step=".01"></div>
      </td>
      <td>2</td>
      <td><span class="remove-action"><i class="fa fa-times-circle"></i></span></td>
    </tr>
    ...
  </tbody>
</table>

答案 1 :(得分:0)

Val()用于html表单元素。使用text()代替非表单元素。