Очистить поля ввода при установке флажка
у меня есть флажок и два поля ввода. Необходимо либо установить флажок, либо заполнить два поля ввода. Я делаю проверку, используя Angular, т. е. ng-show, ng-required.
когда флажок установлен, два поля ввода отключены, т. е. ng-disabled= " $parent.виртуальная память.selectAllDates".
теперь я также должен очистить любые данные, которые могут быть введены в текстовые поля.
флажок не установлен при загрузке страницы. Это набор в контроллере, как это: vm.selectAllDates = false;
есть ли способ очистить поля ввода, когда флажок установлен в Angular?
изменить Я добавил, что я пытался сделать, используя Ваш пример
флажок:
<input name="dateSelectAll" type="checkbox"
ng-model="$parent.vm.selectAllDates"
ng-required="vm.selectedReport.Parameters.StartDate == null && vm.selectedReport.Parameters.EndDate == null" />All Available Dates
ввод даты начала:
<input name="beginningDate" type="text" class="form-control form-field" datepicker-popup="dd-MMM-yyyy"
ng-disabled="$parent.vm.selectAllDates"
ng-model="$parent.vm.selectedReport.Parameters.StartDate"
is-open="beginningDateOpened"
ng-required="$parent.vm.selectAllDates == false"
ng-change="$parent.vm.selectedReport.Parameters.StartDate = $parent.vm.selectAllDates ? '' : $parent.vm.selectedReport.Parameters.StartDate"
close-text="Close" />
дата окончания:
<input name="endDate" type="text" class="form-control form-field" datepicker-popup="dd-MMM-yyyy"
ng-disabled="$parent.vm.selectAllDates"
ng-model="$parent.vm.selectedReport.Parameters.EndDate"
is-open="endDateOpened" ng-change="$parent.vm.selectedReport.Parameters.EndDate = $parent.vm.selectAllDates ? '' : $parent.vm.selectedReport.Parameters.EndDate"
ng-required="$parent.vm.selectAllDates == false && $parent.vm.selectedReport.Parameters.EndDate == null"
close-text="Close" />
одна действительно странная вещь, я хотел увидеть, что происходит, поэтому я добавил
{{$parent.vm.selectedReport.Parameters.StartDate = $parent.vm.selectAllDates ? '' : $parent.vm.selectedReport.Parameters.StartDate}}
после поля ввода StartDate. Когда я выбрал дату, дата была добавлена в поле ввода,а также под входом. Когда я щелкнул флажок, дата была удалена из поля ввода, а также из-под поля ввода. Так это сработало! Но в ту минуту, когда я удалил вышеуказанный код из-под поля ввода, он перестал работать...Я был как что?
2 ответов
простой подход заключается в использовании ngChange
директива на флажке и установите модель ввода текста в пустую строку, если флажок установлен. Что-то вроде этого:--3-->
<input type="text" ng-model="data.test" ng-disabled="data.check">
<input type="checkbox" ng-model="data.check" value="one"
ng-change="data.test = data.check ? '' : data.test">
Я закончил строить из того, что вы показали мне @dfsq. Большое спасибо за помощь! В итоге я создал функцию для ng-change и поставил ее на флажок:
<input name="dateSelectAll" type="checkbox"
ng-model="$parent.vm.selectAllDates"
ng-change="vm.clearFields()"
ng-required="vm.selectedReport.Parameters.StartDate == null && vm.selectedReport.Parameters.EndDate == null" />All Available Dates
затем в моем контроллере я добавил код, чтобы очистить поля ввода даты начала и окончания:
vm.clearFields = function () {
vm.selectedReport.Parameters.StartDate = vm.selectAllDates ? '' : vm.selectedReport.Parameters.StartDate;
vm.selectedReport.Parameters.EndDate = vm.selectAllDates ? '' : vm.selectedReport.Parameters.EndDate;
}
Если есть лучший способ, пожалуйста, дайте мне знать. Еще раз спасибо!