【发布时间】:2015-09-22 05:14:56
【问题描述】:
我有这个角代码,我有一个表单,我希望在单击输入时,它模拟一个选项卡按键并专注于下一个输入。当它到达最后一个输入时,它会查找按钮元素,然后触发表单的 ng-submit 但是由于某些原因,angularjs 没有捕获我的触发点击功能。有谁知道如何完成这项工作?这是我的 jsfiddle http://jsfiddle.net/qujoy4sp/4/
这是我的directive.js
app.directive('myEnter', function () {
return function (scope, element, attrs) {
element.bind("keydown keypress", function (event) {
var keyCode = event.which || event.keyCode;
$timeout(function() {
if(attrs.myEnter!= "undefined") {
event.preventDefault();
var elementToFocus = element.parent().next().find('button');
angular.element( elementToFocus[0]).triggerHandler('click');
} else {
if (keyCode === 13) {
event.preventDefault();
var elementToFocus = element.parent().next().find('input');
if(angular.isDefined(elementToFocus)) {
elementToFocus[0].focus();
}
}
}
})
});
};
});
app.directive('errorPopup', function($ionicPopup) {
return {
restrict: 'EA',
scope: {data: '=errorPopup'},
controller: function($scope, $rootScope) {
},
link : function(scope, element, attrs, ngModel) {
element.bind("submit", function() {
switch(attrs.errorPopup) {
case 'loginData':
if(!scope.data.orgCode.$valid) {
alert("code is needed")
}
else if(!scope.data.email.$valid || !scope.data.email.$error) {
alert("email is needed")
}
else if(!scope.data.password.$valid) {
alert("password is needed")
}
break;
}
});
}
}
})
我的登录.html
<body ng-app="ap" ng-controller="con">
<div scroll="true">
<form name="loginData" class="container ng-scope ng-invalid ng-pristine ng-invalid-required" error-popup="loginData" ng-submit= "loginData.$valid && doLogin(loginData)" novalidate>
<div class= "list list-inset login-form">
<label class="item item-input item-icon-left">
<i class="fa fa-building"></i>
<input type="text" name="orgCode" class="hijack-align form-control ng-pristine ng-invalid ng-invalid-required" ng-model="user.orgCode" placeholder="Organization Code" my-enter="undefined" required>
</label>
<label class="item item-input item-icon-left">
<i class="fa fa-envelope"></i>
<input type="email" name="email" class="hijack-align form-control ng-pristine ng-invalid ng-invalid-required ng-valid-email" ng-model="user.email" placeholder="Email Address" my-enter="undefined" required>
</label>
<label class="item item-input item-icon-left">
<i class="fa fa-key"></i>
<input type="Password" name="password" class="hijack-align form-control ng-pristine ng-invalid ng-invalid-required ng-invalid-minlength" ng-model="user.password" placeholder="Your Password" ng-minlength="8" my-enter="submitData" required>
</label>
<div class="login-btn">
<button class="button button-block button-positive" type="submit" ng-disabled="submitted">Log in</button>
</div>
</div>
</form>
</div>
</body>
我有一些错误检查要做,我想在表单提交时对其进行 d,因此另一个指令称为 errorPopup 但主要是让它在按钮元素上提交表单。
【问题讨论】:
标签: javascript jquery angularjs angularjs-directive