增加动态表单字段

时间:2017-12-05 01:38:35

标签: javascript

我有一个允许用户添加过去雇主的表单。用户可以按下按钮并动态添加新雇主。

以下是我需要做的事情:假设用户增加了2个雇主。我需要先添加每项工作所花费的年数 -

EX:雇主1 - 2005 - 2007 = 2年。      雇主2 - 2010 - 2015 = 5年。

现在,我需要总共EX:7年。

表单字段的名称如下:

ID1_empAppWorkHistoryStartDateYear ID1_empAppWorkHistoryEndDateYear

ID2_empAppWorkHistoryStartDateYear ID2_empAppWorkHistoryEndDateYear

如何在JavaScript中循环动态输入名称并计算在所有作业上发送的总年数(最多可以有5个)

2 个答案:

答案 0 :(得分:0)

如果您只是在输入时将输入的值存储在变量中,该怎么办?您可能需要由 HTML表单事件触发的功能? https://www.w3schools.com/tags/ref_eventattributes.asp

在提交时,如果不是更早,您可以计算差异并将其添加到存储总年数的任何地方:)。

答案 1 :(得分:0)

知道您将每个添加的输入命名为以下形式:

第一次输入:

IDX_empAppWorkHistoryStartDateYear

对于第二个输入:

IDX_empAppWorkHistoryEndDateYear

其中X是输入的编号。

首先应该添加一个全局变量,该变量将包含添加的输入数量(每次用户添加雇主时都会增加),让我们将其命名为glbInputsNumber

您的代码如下:

var totalYears = 0;
for (let i = 0; i < glbInputsNumber; i++) {
totalYears += parseInt(document.getElementsByName('IDX_empAppWorkHistoryEndDateYear'.replace('X', i)).value) - parseInt(document.getElementsByName('IDX_empAppWorkHistoryStartDateYear'.replace('X', i)).value);
}

编辑:如果您对全局变量不满意,可以对所有这些输入使用公共类名称,这样您就可以获得添加的输入数量,如下所示:

var myobject = document.getElementsByClassName('dateInput');//'dateInput' is the name of class that will be attributed to those added inputs
var inputsNumber = myobject.length / 2;