$ .each()函数在jQuery asp.net mvc中调用两次

时间:2014-04-16 13:26:28

标签: jquery asp.net-mvc

我有一个包含所有员工姓名的下拉列表

@Html.DropDownListFor(n => n.EMP_ID, (SelectList)ViewBag.EmployeeList,"== Choose an Employee Name==", new { @id = "ddlemployee" })

和jave文本动态文本框如

  <table>
   @for(int i=0;i<count;i++)
   {
    <tr> 

 <td>@Html.TextBoxFor(m => m.GetTimeSheetDetails[i].SUN_HRS, new { style = "width:50px; height:30px;", @class = "sunhrs" })
 </tr>
 <tr>
 <td>
     @Html.Label("lbl_Sunhrs", new { @id = "lblSunhrs" })

  </td>
  </tr>
   }
 </table>

其中“ddlemployee”填充所有员工姓名,当选择员工时,将转到控制器并获取数据并在文本框中填充数据,如:

  <script src="//code.jquery.com/jquery-1.4.1.js"></script>
  <script>
     $(document).ready(function () {
            $("#ddlemployee").change(function () {
                debugger;
                var startdate = $("#txtStartDate").val();
                var empid = $("#ddlemployee").val();

                location.href = '@Url.Action("GetEmployeeDetails", "Employer")?empid=' + empid + '&&projectId=0&&startdate=' + startdate;
                return false;
            });
            $("#btnUpdate").click(function () {
                var empid = $("#ddlemployee").val();
                if (empid != 0) {
                  var msg=  confirm("Are You Sure? Do You Want to Update the Record?");
                  if (msg == false) {
                      alert("You have cancel Updating the record");
                      return false;
                  }
                  else {
                      return true
                  }
                }
                else {

                    alert("Please Select Employee name");
                    return false;
                }
            });

        });

</script>

我的问题是,在这里我要总结所有文本框值的所有“sunhrs”并在根据员工姓名获取数据后在“lblsunhrs”上显示标签总值

$(document).ready(function(){
var total=0;
$('.sunhrs').each(function(){
    total += Number($(this).val());
});
$('.total').text(total);
 });    

问题是它计算两次相同的元素,例如,如果将sunhrs值的数据填充为'2',总计为'4',为什么会发生这种情况,是DOM效果?是否有任何替代解决方案,为此,为了完美的计算,请帮助我。

0 个答案:

没有答案