Je sais qu'il y a des questons simmilar, mais je ne trouve vraiment pas de réponse adaptée à mon problème.Pourquoi je ne peux pas utiliser deux fois la fonction datepicker dans la même table?
J'ai cette sorcière de table HTML
est creux en boucle un tableau - défini dans mon ViewModel:
<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>
ce que j'ai dans mon ViewModel est le code ci-dessous - contenant les lignes de la table et il est censé exécuter la .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: "d-M-y"
});
});
},
ET
newAssimilationRow = function(){
this.assimilationRows.push(new AssimilationInfo(this.clientNumber()));
},
removeAssimilationRow = function (ca){
assimilationRows.remove(ca);
},
Les fonctions ci-dessus ajoutent ou suppriment des lignes dans la table HTML. Le problème auquel je suis confronté est que le .datepicker
ne fonctionne que sur la première ligne du tableau - si j'ajoute une autre ligne, cela ne fonctionne tout simplement pas.
Je suis assez sûr que je ne peux pas l'appeler correctement, mais je ne suis pas en mesure de détecter le problème en tant que débutant. Y at-il un moyen d'appeler le datepicker
sur chaque ligne de table?
MISE À JOUR
I ajouté
assimilationDatePicker = (function() {
$(".AssimilationDate").datepicker({
yearRange: "-20:+100",
changeMonth: true,
changeYear: true,
dateFormat: "d-M-y"
});
});
et maintenant il montre sur chaque ligne, mais seulement la valeur de la 1ère entrée de la ligne est mis à jour.
parce que vous créez datepicker pour id: '$ (" #AimimilationDate ") .datepicker', thy pour ajouter le sélecteur de classe:' $ (".AimpressionDate") .datepicker' et dans la forme également '
@krasu cela a fonctionné, mais, maintenant, il met à jour uniquement le valeur de la 1ère case :( – Slim
'assimilationDatePicker = ...' - est objcet globale, essayez ceci 'this.assimilationDatePicker = ...', je n'ai pas d'expertise avec knockout.js, donc je ne sais pas si aider – krasu