2016-05-12 83 views
1

如何获取兄弟类(.priceToCalc)的值并设置在用户输入值(.numItems)输入后类(.totalAmt)的值。如何获取兄弟类(.priceToCalc)的值并在点击兄弟后设置另一类(.totalAmt)的值

<table> 
    <tr id="mainRow"> 
     <td> 
      @Html.DisplayFor(modelItem => item.CategoryDesc) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.HasPicture) 
     </td> 
     <td id="tdNumItems"> 
      <form asp-controller="Index" name="Quantity"> 
       <p> 
        Quantity: <input type="text" name="quantity" size="3" id="[email protected](item.itemKey)" class="numItems"> 
       </p> 
      </form> 
     </td> 
     <td id="[email protected](item.itemKey)" class="priceToCalc" data-topass="@item.UnitPrice" > 
      @Html.DisplayFor(modelItem => item.UnitPrice) 
     </td> 
     <td> 
      <form asp-controller="Index" name="Amount"> 
       <p id="price"> 
        Amount: <input type="text" name="Amount" size="5" disabled="disabled" id="[email protected](item.itemKey)" class="totalAmt"> 
       </p> 
      </form> 
     </td> 
    </tr> 
</table> 
$(document).ready(function() { 
    $('.numItems').mouseleave(function() { 
     var numberVal = $(this).val(); 
     var idOfAmt = $(event.target).attr('id'); 
     var valueTomult=($("#tdNumItems").siblings('.priceToCalc').text()); 
     idOfAmt = idOfAmt.split('-'); 
     var idOfPrice; //value of next sibling,don't know this either 
     alert(idOfAmt[1] + '- val>' + numberVal + '-amt>' + valueTomult); 

    }); 
}); 

它只返回选择器.priceToCalc的第一环路的值。

+0

你需要使用类时,因为如果你不小心,他们可以返回多个结果要小心。 –

回答

0

首先在mouseleave上做这件事有点奇怪。用户在输入时可以看到计算更改,这可以使用keyup来实现。

要实际执行您所需的操作,可以使用DOM遍历来找到最接近inputtr事件,然后find()检索所需的子元素以进行计算。事情是这样的:

$(document).ready(function() { 
    $('.numItems').keyup(function() { 
     var $row = $(this).closest('tr'); 
     var unitPrice = parseFloat($row.find('.priceToCalc').text()); 
     $row.find('.totalAmt').val(this.value * unitPrice); 
    }); 
}); 

Working Example

+0

现货在队友。我在jquery的学习曲线的颠簸底部,这花费了我很多时间试图排序它。再次感谢 – Brick

+0

没问题,很乐意帮忙 –