How can I get values of inputs that have the same

2020-05-03 12:41发布

This should be easy, but I can't seem to get it right.

var totalHours = 0;
this.$(".timesheet-daily-input").each( function () {
    var inputValue = $(this).text();
    var hours = parseInt(inputValue);
    totalHours += (hours == null) ? 0 : hours;
});

I've tried $(this).val() and $(this).html() as well, but can't get the values out of the input fields.

Edit: Apologies, I knew I was forgetting to mention something. The "this." at the start of the each loop is because I am using backbone's models and collections. The first "this." refers to the specific model in question. It loops through the proper number of times, I just can't get the value.

4条回答
▲ chillily
2楼-- · 2020-05-03 12:53

Get rid of the this. before $(".timesheet-daily-input") and use $(this).val() to get the value of the inputs.

查看更多
爱情/是我丢掉的垃圾
3楼-- · 2020-05-03 12:53

Couldn't find an exact solution, but changed my approach by selecting the parent div, and looping through it's child elements.

var totalHours = 0;
this.$("#timesheet-daily-entry-fields-container").children().each(function () {
    var inputValue = $(this).val();
    var hours = parseInt(inputValue);
    totalHours += isNaN(hours) ? 0 : hours;
});
查看更多
小情绪 Triste *
4楼-- · 2020-05-03 12:55
var inputValue = $(this).val();
查看更多
趁早两清
5楼-- · 2020-05-03 12:58

It's hard to tell without more code but change

var inputValue = $(this).text();
var hours = parseInt(inputValue);
totalHours += (hours == null) ? 0 : hours;

to

var inputValue = $(this).val(); // use val
var hours = parseInt(inputValue, 10); // use 10 as radix
totalHours += isNaN(hours) ? 0 : hours; // compare to NaN instead of null

Note that parseInt("09") is 0 and that the result of parseInt cannot be null.

查看更多
登录 后发表回答