我有一个需要最少字符数的输入。当用户开始输入内容然后切换到另一个字段而没有达到所需的最少字符数时,我想更改文本的类别以将其变为红色。
我曾尝试使用此代码来检测焦点何时发生变化,但它不起作用:
$scope.$watch(function(){
return $('#job_desc').is(':active');
}, function(){
console.log('test');
})
问题是什么?
非常感谢
最佳答案
如果您使用的是 angularjs 1.2,则有两个指令可以帮助您查看字段是否具有焦点:ng-focus 和 ng-blur。如果没有,实现您自己的指令非常简单。代码(plunker) :
<!DOCTYPE html>
<html ng-app="plunker">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link rel="stylesheet" href="style.css" />
<script data-require="jquery" data-semver="2.0.3" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script data-require="angular.js@1.2.x" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js" data-semver="1.2.16"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<p>Hello {{name}}!</p>
<form>
<input ng-model="name" id="name" ng-focus="focused()" ng-blur="blurred()">
<input ng-model="name2">
</form>
</body>
</html>
和javascript
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
$scope.focused = function() {
console.log("got focus");
}
$scope.blurred = function() {
console.log("lost focus");
}
});
如果另一方面,您只需要验证,请查看 angularjs 中的表单验证,例如 myForm.myInput.$valid。 Angularjs 相应地设置 ng-valid 和 ng-invalid 类。
关于javascript - 检查输入是否有焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23157139/