【发布时间】:2014-02-13 18:35:46
【问题描述】:
我们正在基于 HotTowel 模板使用 Angularjs 和 Breeze 开发 SPA
我们在页面上有多个 datePickers 给我们带来了以下问题:
当用户切换到日期选择器时,日期选择器会打开,但不会在用户切换到下一个控件时关闭。由于日期选择器堆叠在 ui 的同一列中,这会导致下拉列表覆盖下面的字段。清除它们的唯一方法是选择一个日期或单击表单上的其他位置
在编辑绑定到数据模型的现有记录时,用户无法在输入区域中键入日期。如果他们突出显示日期并尝试输入它,它会删除现有日期并且不允许用户键入新日期。如果他们单击 X 以清除输入字段,则他们无法键入新日期。如果他们将光标放在日期的末尾并退格,则日期会消失,日历选择器会设置为 1902 年 1 月。
基本上,如果用户愿意拿起鼠标并单击选择器中的日期并且从不尝试输入日期,这很好。这对我们的用户社区来说是不现实的。
这里是html:
<label for="ApplicationCompleteDate" data-ng-show="vm.mode === 'edit'"><strong>Application Complete Date:</strong></label>
<div class="input-append" data-ng-show="vm.mode === 'edit'">
<span>
<input name="ApplicationCompleteDate" type="text" class="form-control input-medium" tabindex="16" placeholder="{{vm.format}}"
datepicker-popup="{{vm.format}}" close-text="Close" show-weeks='false'
is-open="vm.applicationCompleteDateOpened"
datepicker-options="vm.dateOptions"
data-ng-model="vm.formData.dateApplicationComplete"
data-ng-required="vm.applicationCompleteDateRequired"
data-ng-readonly="(!user.isInUserGroup && vm.mode === 'new') || (!user.isInCPUGroup && vm.mode === 'edit')" />
</span>
<span class="add-on">
<a href="#" data-ng-click="vm.applicationCompleteDateOpen($event)"><i class="icon-calendar"></i></a>
</span>
</div>
<label for="DecisionDatePicker" data-ng-show="vm.mode === 'edit'"><strong>Decision Date:</strong></label>
<div class="input-append" data-ng-show="vm.mode === 'edit'">
<span>
<input name="DecisionDatePicker" id="ddpID" type="text" class="form-control input-medium" tabindex="14" placeholder="{{vm.format}}"
datepicker-popup="{{vm.format}}" close-text="Close" show-weeks='false'
is-open="vm.decisionDateOpened"
datepicker-options="vm.dateOptions"
data-ng-model="vm.formData.dateDecision"
data-ng-required="vm.decisionDateRequired"
data-ng-readonly="(!user.isInUserGroup && vm.mode === 'new') || (!user.isInCPUGroup && vm.mode === 'edit')" />
</span>
<span class="add-on">
<a href="#" data-ng-click="vm.decisionDateOpen($event)"><i class="icon-calendar"></i></a>
</span>
</div>
<label for="DateClosedPicker" data-ng-show="vm.mode === 'edit'"><strong>Closed Date:</strong></label>
<div class="input-append" data-ng-show="vm.mode === 'edit'">
<span>
<input name="DateClosedPicker" type="text" class="form-control input-medium" tabindex="15" placeholder="{{vm.format}}"
datepicker-popup="{{vm.format}}" close-text="Close" show-weeks='false'
is-open="vm.dateClosedOpened"
datepicker-options="vm.dateOptions"
data-ng-model="vm.formData.dateClosed"
data-ng-required="false"
data-ng-readonly="(!user.isInUserGroup && vm.mode === 'new') || (!user.isInCPUGroup && vm.mode === 'edit')" />
</span>
<span class="add-on">
<a href="#" data-ng-click="vm.dateClosedOpen($event)"><i class="icon-calendar"></i></a>
</span>
</div>
我们正在使用 ng-model 的双向绑定。
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
同样的事情也困扰着我。曾经解决过这个问题吗?
-
我们一直在忙其他问题,还没有找到好的解决方案。但是,我们将在接下来的几周内回到这一点。找到解决方案后,我将在此处发布。我们很确定这是 2 路绑定的结果。
-
我现在也在研究。我认为我在正确的道路上,所以一旦我有东西,我也会发布。
-
你们有没有找到解决办法?
标签: angularjs datepicker breeze angular-ui-bootstrap