2025-11-02 14:35:35 +03:00

126 lines
7.0 KiB
JSON
Executable File

// angular-controller.js
colorAdminApp.controller('formValidationController', function ($scope, $rootScope, $state) {
$scope.submitForm = function (form) {
if (!form.$valid) {
$('form[name="' + form.$name + '"] *').tooltip('dispose');
angular.forEach(form.$error, function (field) {
angular.forEach(field, function (errorField) {
errorField.$setTouched();
var targetContainer = 'form[name="' + form.$name + '"] [name="' + errorField.$name + '"]';
var targetMessage = (errorField.$error.required) ? 'This is required' : '';
targetMessage = (errorField.$error.email) ? 'Invalid email' : targetMessage;
targetMessage = (errorField.$error.url) ? 'Invalid website url' : targetMessage;
targetMessage = (errorField.$error.number) ? 'Only number is allowed' : targetMessage;
targetMessage = (errorField.$name == 'alphabets') ? 'Only alphabets is allowed' : targetMessage;
targetMessage = (errorField.$error.minlength) ? 'You must provide at least 20 characters for this field' : targetMessage;
targetMessage = (errorField.$error.maxlength) ? 'You must not exceed the maximum of 200 characters for this field' : targetMessage;
$(targetContainer).first().tooltip({
placement: 'top',
trigger: 'normal',
title: targetMessage,
container: 'body',
animation: false
});
$(targetContainer).first().tooltip('show');
});
});
}
};
});
// views.html
<form class="form-horizontal" name="validationForm" ng-submit="submitForm(validationForm)" novalidate>
<!-- BEGIN panel -->
<div class="panel panel-inverse" data-sortable-id="form-validation-1">
<!-- BEGIN panel-heading -->
<div class="panel-heading">
<h4 class="panel-title">Basic Form Validation</h4>
<div class="panel-heading-btn">
<a href="javascript:;" class="btn btn-xs btn-icon btn-default" data-toggle="panel-expand"><i class="fa fa-expand"></i></a>
<a href="javascript:;" class="btn btn-xs btn-icon btn-success" data-toggle="panel-reload"><i class="fa fa-redo"></i></a>
<a href="javascript:;" class="btn btn-xs btn-icon btn-warning" data-toggle="panel-collapse"><i class="fa fa-minus"></i></a>
<a href="javascript:;" class="btn btn-xs btn-icon btn-danger" data-toggle="panel-remove"><i class="fa fa-times"></i></a>
</div>
</div>
<!-- END panel-heading -->
<!-- BEGIN panel-body -->
<div class="panel-body">
<div class="row mb-3">
<label class="col-form-label col-sm-3" for="fullname">Full Name <span class="text-danger">*</span></label>
<div class="col-sm-3">
<input type="text" class="form-control" ng-model="form.fullname" name="fullname" placeholder="Required" required />
</div>
</div>
<div class="row mb-3">
<label class="col-form-label col-sm-3">Required Select Box <span class="text-danger">*</span></label>
<div class="col-sm-3">
<select class="form-select" name="selectBox" ng-model="form.selectBox" required>
<option value="">Please choose</option>
<option value="foo">Foo</option>
<option value="bar">Bar</option>
</select>
</div>
</div>
<div class="row mb-3">
<label class="col-form-label col-sm-3">Required Radio Button <span class="text-danger">*</span></label>
<div class="col-sm-6">
<div class="form-check">
<input type="radio" name="radioRequired" id="radio1" ng-model="form.radioRequired" value="foo" class="form-check-input" required />
<label class="form-check-label" for="radio1"> Radio Button 1</label>
</div>
<div class="form-check">
<input type="radio" name="radioRequired" id="radio2" ng-model="form.radioRequired" value="bar" class="form-check-input" required />
<label class="form-check-label" for="radio2"> Radio Button 2</label>
</div>
</div>
</div>
<div class="row mb-3 d-flex align-items-center">
<label class="col-form-label col-sm-3">Required Checkbox <span class="text-danger">*</span></label>
<div class="col-sm-6">
<div class="form-check">
<input type="checkbox" name="requiredCheckbox" id="check2" ng-model="form.requiredCheckbox" value="foo" class="form-check-input" required />
<label class="form-check-label" for="check2"> Checkbox</label>
</div>
</div>
</div>
<div class="row mb-3">
<label class="col-form-label col-sm-3" for="message">Message (20 chars min, 200 max) <span class="text-danger">*</span></label>
<div class="col-sm-6">
<textarea class="form-control" name="message" rows="4" ng-minlength="20" ng-maxlength="200" ng-model="form.message" placeholder="Range from 20 - 200" required></textarea>
</div>
</div>
<div class="row mb-3">
<label class="col-form-label col-sm-3" for="email">Email Address</label>
<div class="col-sm-6">
<input type="email" class="form-control" name="email" placeholder="Email" ng-model="form.email" />
</div>
</div>
<div class="row mb-3">
<label class="col-form-label col-sm-3" for="website">Website</label>
<div class="col-sm-6">
<input type="url" class="form-control" name="website" placeholder="url" ng-model="form.url" />
</div>
</div>
<div class="row mb-3">
<label class="col-form-label col-sm-3" for="message">Number</label>
<div class="col-sm-6">
<input type="number" class="form-control" name="number" placeholder="Number" ng-model="form.number" />
</div>
</div>
<div class="row mb-3">
<label class="col-form-label col-sm-3" for="message">Regular Expression</label>
<div class="col-sm-6">
<input type="text" class="form-control" name="alphabets" placeholder="Alphabets" ng-model="form.alphabets" ng-pattern="/^[A-z]+$/" />
</div>
</div>
</div>
<!-- END panel-body -->
<!-- BEGIN panel-footer -->
<div class="panel-footer">
<button type="submit" class="btn btn-success w-100px">Validate</button>
</div>
<!-- END panel-footer -->
</div>
<!-- END panel -->
</form>