How can I get values of inputs that have the same

2020-05-03 12:56发布

问题:

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.

回答1:

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



回答2:

var inputValue = $(this).val();


回答3:

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.



回答4:

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;
});