2014-02-11 2 views
44

Как очистить ввод текста нажатием кнопки с помощью angularJS?Очистить ввод текста при нажатии с помощью AngularJS

Search input

Х является отдельным звеном, на котором я хотел бы, чтобы вызвать функцию.

HTML

<input type="text" class="form-control" data-ng-model="searchAll"> 
<a class="clear" data-ng-click="clearSearch()">X</a> 
+2

Добавить HTML входа, пожалуйста. –

ответ

79

Просто ясно значение модели сфера на событие щелчка, и он должен сделать трюк для вас.

<input type="text" ng-model="searchAll" /> 
<a class="clear" ng-click="searchAll = null"> 
    <span class="glyphicon glyphicon-remove"></span> 
</a> 

Или, если вы держите $scope функцию вашего контроллера и снимите его оттуда. Убедитесь, что вы правильно настроили контроллер.

$scope.clearSearch = function() { 
    $scope.searchAll = null; 
} 
+0

Спасибо, это работает, но только если код встроен, а не в отдельный JS-файл. Не могли бы вы рассказать мне, как вы можете заставить его работать в отдельном JS-файле? – Barney

+2

См. Мое редактирование. Но почему вы хотите добавить дополнительный код, который не требует его? –

15
$scope.clearSearch = function() { 
    $scope.searchAll = ""; 
}; 

http://jsfiddle.net/nzPJD/

JsFiddle, как вы могли бы сделать это без использования встроенного JS.

6

Если вы хотите очистить всю форму, вы можете использовать такой подход. Это ваша модель в контроллер:

$scope.registrationForm = { 
    'firstName'  : '', 
    'lastName'  : '' 
}; 

Ваш HTML:

<form class="form-horizontal" name="registrForm" role="form"> 
    <input type="text" class="form-control" 
         name="firstName" 
         id="firstName" 
         ng-model="registrationForm.firstName" 
         placeholder="First name" 
         required> First name 
    <input type="text" class="form-control" 
         name="lastName" 
         id="lastName" 
         ng-model="registrationForm.lastName" 
         placeholder="Last name" 
         required> Last name 
</form> 

Затем вы должны клонировать/сохранить прозрачное состояние по:

$scope.originForm = angular.copy($scope.registrationForm); 

Ваша функция сброса будет:

$scope.resetForm = function(){ 
    $scope.registrationForm = angular.copy($scope.originForm); // Assign clear state to modified form 
    $scope.registrForm.$setPristine(); // this line will update status of your form, but will not clean your data, where `registrForm` - name of form. 
}; 

В таком случае вы можете очистить в целом ваша форма

+0

Я реализую ваше решение и работаю для меня, я действительно предупреждаю: TypeError: Не могу прочитать свойство $ setPristine неопределенного в области видимости. $ Scope.resetForm можно исправить это предупреждение? –

10

проще и более короткий путь является:

<input type="text" class="form-control" data-ng-model="searchAll"> 
<a class="clear" data-ng-click="searchAll = '' ">X</a> 

Это всегда работал для меня.

+0

Можете ли вы объяснить это? поэтому я могу проголосовать до –

+0

, когда мы нажимаем «X», тогда значение модели «searchAll» станет пустым, потому что мы назначили пустую строку этой модели, когда нажимаем «X». !! data-ng-click = "searchAll = ''" !!. Хорошо, что нам не нужно делать и вызывать отдельную функцию только для одной строки кода. –

1

Вдохновленные из Robert's ответа, но когда мы используем,

ng-click="searchAll = null" в фильтре, он делает значение модели в качестве null и в Пошаговой поиске не работает с нормальной функциональностью, так что было бы лучше достаточно использовать ng-click="searchAll = ''" вместо

+0

Можете ли вы рассказать о последствиях XSS при использовании этого метода? – Justin

4

Самый простой способ очистить/сбросить текстовое поле мыши, чтобы очистить/сбросить за рамки

<input type="text" class="form-control" ng-model="searchAll" ng-click="clearfunction(this)"/> 

в контроллере

$scope.clearfunction=function(event){ 
    event.searchAll=null; 
} 
0

в контроллере

$scope.clearSearch = function() { 
    $scope.searchAll = ''; 
} 
0

Try это,

this.searchAll = element(by.xpath('path here')); 
this.searchAll.sendKeys(''); 
Смежные вопросы