Выберите значение углового указателя даты, используя JavaScript - PullRequest
0 голосов
/ 19 февраля 2019

Я хочу автоматизировать некоторые вещи на странице, поэтому я хочу использовать javascript для выбора значения datepicker.Это HTML с datepicker:

<div class="range-input-container">
   <span class="margin-right-7 input-datepicker-container active-input" data-ng-class="{'active-input': startFromDate === 'startDate'}">
      <input type="text" id="start-date" data-ng-keyup="sendGemiusEventForInputDate('data_od_wprowadzona_recznie', $event)" class="input-control input-datepicker avoid-print ng-valid ng-isolate-scope ng-not-empty ng-touched ng-dirty ng-valid-date" uib-datepicker-popup="dd-MM-yyyy" data-ng-disabled="parDisabled" is-open="false" data-ng-model="startDate" placeholder="dd-mm-rrrr" data-dir-format-date="" data-ng-focus="toggleDatepickerRange(true, 'startDate'); $event.stopPropagation();">
      <div uib-datepicker-popup-wrap="" ng-model="date" ng-change="dateSelection(date)" template-url="uib/template/datepickerPopup/popup.html" class="ng-pristine ng-untouched ng-valid ng-scope ng-not-empty">
         <!-- ngIf: isOpen -->
      </div>
      <input type="text" class="input-control input-datepicker show-only-for-print" data-ng-value="startDate | date:'dd-MM-yyyy'" value="07-02-2019">
      <!-- ngIf: validateFromService -->
   </span>
   <span>-</span>
   <span class="margin-left-7 input-datepicker-container" data-ng-class="{'active-input': startFromDate === 'endDate'}">
      <input type="text" id="end-date" data-ng-keyup="sendGemiusEventForInputDate('date_typed_manual', $event)" class="input-control input-datepicker avoid-print ng-valid ng-isolate-scope ng-touched ng-dirty ng-valid-date ng-not-empty" uib-datepicker-popup="dd-MM-yyyy" data-ng-disabled="parDisabled" is-open="false" data-ng-model="endDate" placeholder="dd-mm-rrrr" data-dir-format-date="" data-ng-focus="toggleDatepickerRange(true, 'endDate'); $event.stopPropagation();">
      <div uib-datepicker-popup-wrap="" ng-model="date" ng-change="dateSelection(date)" template-url="uib/template/datepickerPopup/popup.html" class="ng-pristine ng-untouched ng-valid ng-scope ng-not-empty">
         <!-- ngIf: isOpen -->
      </div>
      <input type="text" class="input-control input-datepicker show-only-for-print" data-ng-value="endDate | date:'dd-MM-yyyy'" value="07-02-2019">
      <!-- ngIf: validateFromService -->
   </span>
</div>

После некоторого поиска я обнаружил, что для изменения значения с чистым js требуются эффекты input и blur.Вот что мне удалось:

var element = document.getElementById('start-date');
element.value = '17-02-2019';
var inputEvent = document.createEvent('Event');
inputEvent.initEvent('input', true, true);
inputEvent.simulated = true;
element.dispatchEvent(inputEvent);

var blurEvent = document.createEvent('Event');
blurEvent.initEvent('blur', true, true);
blurEvent.simulated = true;
element.dispatchEvent(blurEvent);

Когда я его использую, это похоже на работу, потому что после этого я вижу, что значение datepicker изменилось на 17-02-2019.Кроме того, входные данные изменились на:

<input type="text" class="input-control input-datepicker show-only-for-print" data-ng-value="startDate | date:'dd-MM-yyyy'" value="17-02-2019">

К сожалению, когда я снова нажимаю кнопку выбора даты, дата возвращается к 07-02-2019.Кажется, что мой код JavaScript не обновил его правильно.Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...