如何在用户单击页面上的任意位置时自动将文本区域清空。Angularjs,Javascript?
我在angularjs项目中工作,我有一个文本区域,它会给我一些搜索结果。我希望每当我点击页面上的任何地方时,我的文本区域都会被清除。我的代码是如何在用户单击页面上的任意位置时自动将文本区域清空。Angularjs,Javascript?,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,我在angularjs项目中工作,我有一个文本区域,它会给我一些搜索结果。我希望每当我点击页面上的任何地方时,我的文本区域都会被清除。我的代码是 <input type="text" ng-model="bigdata" ng-change="ctrl.getData(bigdata);searchDataC =true;" ng-model-options="{debounce: 1000}" placeholder="Search contacts" class="search-inp
<input type="text" ng-model="bigdata" ng-change="ctrl.getData(bigdata);searchDataC =true;" ng-model-options="{debounce: 1000}" placeholder="Search contacts" class="search-input ip-size-roster ng-pristine ng-valid ng-touched" aria-invalid="false" style="">
您应该在要执行单击事件的位置使用ng click=“reset1()”
//html
<div ng-controller="MainCtrl" ng-click="reset1()">
<textarea id="textarea" ng-model="txt">
</textarea>
<div>{{txt}}</div>
<!--<button id='btn' ng-click="txt=''">Reset textarea</button>-->
<button id='btn'>Reset textarea</button>
</div>
//js
var app = angular.module('myApp', []);
app.controller('MainCtrl', ['$scope', function ($scope) {
$scope.txt='';
$scope.reset1 = function() {
$scope.txt = '';
};
}]);
{{txt}
重置文本区域
//js
var-app=angular.module('myApp',[]);
app.controller('MainCtrl',['$scope',函数($scope){
$scope.txt='';
$scope.reset1=函数(){
$scope.txt='';
};
}]);
在Html文件中
app.factory('clickAnywhereButHereService', function($document){
var tracker = [];
return function($scope, expr) {
var i, t, len;
for(i = 0, len = tracker.length; i < len; i++) {
t = tracker[i];
if(t.expr === expr && t.scope === $scope) {
return t;
}
}
var handler = function() {
$scope.$apply(expr);
};
$document.on('click', handler);
// IMPORTANT! Tear down this event handler when the scope is destroyed.
$scope.$on('$destroy', function(){
$document.off('click', handler);
});
t = { scope: $scope, expr: expr };
tracker.push(t);
return t;
};
});
app.directive('clickAnywhereButHere', function($document, clickAnywhereButHereService){
return {
restrict: 'A',
link: function(scope, elem, attr, ctrl) {
var handler = function(e) {
e.stopPropagation();
};
elem.on('click', handler);
scope.$on('$destroy', function(){
elem.off('click', handler);
});
clickAnywhereButHereService(scope, attr.clickAnywhereButHere);
}
};
});
如果您在项目中的某个地方使用JQuery,那么您可以使用它
$(文档).ready(函数(){
$('div')。单击(函数(){
调试器
var check=$('#text').val();
如果(选中!=“”){
$('#text').val('')
}
});
});
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.firstName=“John”;
$scope.clear=函数(){
$scope.bigdata=“”;
}
});
学校的工作环节
您可以使用带有函数的ng blur
指令来执行任何您想执行的操作,例如ng blur=“ctrl.clearData()”
@FabioG让我检查并返回给您让我实现,然后返回给您让我实现,然后返回给您。我的座右铭是每当我单击页面中的任何位置时,文本框自动清空。您已经给出了单击按钮。谢谢你的回复使用angularjs的JQuery不是一个很好的练习,虽然我没有使用,但是谢谢你的回复。如果可能的话,我们将实施这一计划。代码正是我所期望的:)
$scope.clickedSomewhereElse = function () {
//clear text here
};
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<input type="text" ng-model="bigdata" ng-change="ctrl.getData(bigdata);searchDataC =true;" ng-model-options="{debounce: 1000}" placeholder="Search contacts" class="search-input ip-size-roster ng-pristine ng-valid ng-touched" aria-invalid="false" ng-blur="clear()">
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.firstName = "John";
$scope.clear = function(){
$scope.bigdata="";
}
});
</script>
</body>
</html>