【发布时间】:2013-10-25 13:34:20
【问题描述】:
我知道有类似的问题,但我真的找不到适合我的问题的答案。
我有这个 HTML 表女巫正在循环通过一个数组 - 在我的 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>
我的 viewModel 中有以下代码 - 包含表格行,它应该执行 .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"
});
});
},
与
newAssimilationRow = function (){
this.assimilationRows.push(new AssimilationInfo(this.clientNumber()));
},
removeAssimilationRow = function (ca){
assimilationRows.remove(ca);
},
上述函数是在 HTML 表格中添加或删除行。
我面临的问题是.datepicker 仅在第一个表行上工作 - 如果我添加另一行,它就是不工作。
我很确定我不能正确调用它,但作为初学者我无法发现这个问题。有没有办法在每个表格行上调用datepicker?
更新
我加了
assimilationDatePicker = (function() {
$( ".AssimilationDate" ).datepicker({
yearRange: "-20:+100",
changeMonth: true,
changeYear: true,
dateFormat: "d-M-y"
});
});
现在它显示在每一行,但只有第一行输入的值被更新。
【问题讨论】:
-
因为您为 id:
$( "#AssimilationDate" ).datepicker创建了日期选择器,所以您要添加类选择器:$( ".AssimilationDate" ).datepicker并在表单中也有<td><input type="text" name="AssimilationDate" id="AssimilationDate" class="AssimilationDate" data-bind="event: { mouseover: assimilationDatePicker}, value: AssimilationDate"></td> -
@krasu 它有效,但是,现在它只更新第一个框的值:(
-
assimilationDatePicker = ...- 是全局对象,试试这个this.assimilationDatePicker = ...,我没有knockout.js的专业知识,所以不确定它是否有帮助 -
还是一样。感谢您试图帮助我!!!
-
有机会获得 jsfiddle 演示吗?
标签: javascript jquery knockout.js datepicker jquery-ui-datepicker