Какие изменения необходимо внести, чтобы получить стандартную директиву countparens
ниже, чтобы предоставить дополнительную пользовательскую проверку строки, показанную ниже во время проверки формы? Код ниже ПРЕДУПРЕЖДЕНА предупреждает пользователя, когда поле ввода пуст, но оно НЕ предупреждает пользователя, когда количество открытых парсеров (
и close parens )
не равно.изготовленный под заказ не принимается. почему нет?
Я использую AngularJS. Я использовал the documentation at this link (scroll to bottom) для разработки кода ниже.
Вот HTML для формы:
<table>
<tr>
<td width=200>
<form name="userForm" ng-submit="rectangularForm(userForm.$valid)" novalidate>
<input type="text" name="fieldname" ng-model="nameofjsontype.fieldname" required />
<p ng-show="userForm.fieldname.$invalid && !userForm.fieldname.$pristine" class="help-block">Function is a required field.</p>
<span ng-show="userForm.nameofjsontype.fieldname.$error.countparens">The #(!= #) !</span>
<br>
<button type="submit" ng-disabled="userForm.$invalid" >Click to submit</button>
</form>
</td>
</tr>
</table>
Javascript файл, содержащий директиву включает:
// create angular app
var myApp = angular.module('myApp', []);
// create angular controller
myApp.controller('myController', ['$scope', '$http', function($scope, $http) {
$scope.nameofjsontype = {type:"nameofjsontype", fieldname: 'some (value) here.'};
$scope.rectangularForm = function(isValid) {
// check to make sure the form is completely valid
if (isValid) {
var funcJSON = {type:"nameofjsontype", fieldname: $scope.nameofjsontype.fieldname};
$http.post('/server/side/controller', funcJSON).then(function(response) {
$scope.nameofjsontype = response.data;
});
}
};
}]);
myApp.directive('countparens', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
ctrl.$validators.countparens = function(modelValue, viewValue) {
if (ctrl.$isEmpty(modelValue)) {
// consider empty models to be valid
return true;
}
if (
($scope.nameofjsontype.fieldname.match(/\)/g).length) == ($scope.nameofjsontype.fieldname.match(/\(/g).length)
) {
// it is valid
return true;
}
// it is invalid
return false;
};
}
};
});
Можете ли вы предоставить плункер с кодом? – lebobbi
@lebobbi Я изучаю это, но я никогда не использовал его раньше. – CodeMed