I know that there are different tasks, but I really cannot find the answer that matches my problem.
I have this HTML table that loops through the array defined in my view model:
<div class="formElement" id="AssimilationDT" style="overflow-x: auto; width: 100em;"> <table class="dataTable"> <thead> <tr> <th> 1 </th> <th> 2 </th> <th> 3</th> <th> 4</th> <th> 5</th> <th> 6</th> <th> 7</th> <th> 8</th> <th> 9</th> <th> 10</th> <th> 11</th> <th> 12/th> <th> 13</th> <th> 14</th> <th> 15</th> <th> 16</th> <th></th> </tr> </thead> <tbody data-bind="foreach: assimilationRows"> <tr> <td><input type="text" name="AssimilationDate" id="AssimilationDate" data-bind="event: { mouseover: assimilationDatePicker}, value: AssimilationDate"></td> <td><input type="text" name="InvoiceSum" data-bind="value: InvoiceSum"></td> <td><input type="text" name="FondAssimAmm" data-bind="value: FondAssimAmm"></td> <td><input type="text" name="FondSgebFondPerc" data-bind="value: FondSgebFondPerc"></td> <td><input type="text" name="FondWholeAssimPerc" data-bind="value: FondWholeAssimPerc"></td> <td><input type="text" name="SgebAssimAmm" data-bind="value: SgebAssimAmm"></td> <td><input type="text" name="SgebFondSgeb" data-bind="value: SgebFondSgeb"></td> <td><input type="text" name="SgebWholeAssimPerc" data-bind="value: SgebWholeAssimPerc"></td> <td><input type="text" name="FondSuppl" data-bind="value: FondSuppl"></td> <td><input type="text" name="FondSupplNum" data-bind="value: FondSupplNum"></td> <td><input type="text" name="FondSupplInvNum" data-bind="value: FondSupplInvNum"></td> <td><input type="text" name="FondDesc" data-bind="value: FondDesc"></td> <td><input type="text" name="SgebSuppl" data-bind="value: SgebSuppl"></td> <td><input type="text" name="SgebSupplNum" data-bind="value: SgebSupplNum"></td> <td><input type="text" name="SgebSupplInvNum" data-bind="value: SgebSupplInvNum"></td> <td> <img src="/HDSHubCreditMonitoring/js/images/close.jpg" alt="Close" data-bind="click: $root.removeAssimilationRow"> </td> </tr> </tbody> </table> <button type="button" id="newSupplierRow" class="button" data-bind="click: newAssimilationRow"> </button> </div>
what I have in my view, the .datepicker is the code below containing the rows of the table, and it should execute .datepicker :
AssimilationInfo = function(clientNum){ this.AssimilationDate = null; this.InvoiceSum = null; this.FondAssimAmm = null; this.FondSgebFondPerc = null; this.FondWholeAssimPerc = null; this.SgebAssimAmm = null; this.SgebFondSgeb = null; this.SgebWholeAssimPerc = null; this.FondSuppl = null; this.FondSupplNum = null; this.FondSupplInvNum = null; this.FondDesc = null; this.SgebSuppl = null; this.SgebSupplNum = null; this.SgebSupplInvNum = null; this.SgebDesc = null; assimilationDatePicker = (function() { $( "#AssimilationDate" ).datepicker({ yearRange: "-20:+100", changeMonth: true, changeYear: true, dateFormat: "dMy" }); }); },
and
newAssimilationRow = function (){ this.assimilationRows.push(new AssimilationInfo(this.clientNumber())); }, removeAssimilationRow = function (ca){ assimilationRows.remove(ca); },
The above functions add or remove rows in an HTML table. The problem I am facing is that .datepicker only works with the first row of the table - if I add another row, it just doesn't work.
I am sure that I cannot name it correctly, but I cannot define the problem as a beginner. Is there a way to call datepicker on every row of the table?
UPDATE
I added
assimilationDatePicker = (function() { $( ".AssimilationDate" ).datepicker({ yearRange: "-20:+100", changeMonth: true, changeYear: true, dateFormat: "dMy" }); });
and now it is displayed on each line, but only the input value of the first line is updated.