Reputation: 1697
I am using bootstrap (4.5) validation inside an Angular application. It works fine, it shows the error icon within the textbox and error message under the textbox. How can I change it to show the error message as tooltip when hovering over the error icon within the textbox? I do not want to show the error message under the textbox.
Code:
<form #loginForm="ngForm" (ngSubmit)="login(loginForm)">
<div class="form-group">
<label>User Name</label>
<input type="text" name="name" class="form-control" [(ngModel)]="userName" #name="ngModel" [ngClass]="{ 'is-invalid': loginForm.submitted && name.invalid }"
required>
<div class="invalid-feedback" *ngIf="loginForm.submitted && name.invalid">
<p *ngIf="name.errors.required">User Name is required</p>
</div>
</div>
<div class="form-group">
<label>Password</label>
<input type="password" class="form-control" name="password" [(ngModel)]="pwd" #password="ngModel"
[ngClass]="{ 'is-invalid': loginForm.submitted && password.invalid }" required>
<div *ngIf="loginForm.submitted && password.invalid" class="invalid-feedback">
<div *ngIf="password.errors.required">Password is required</div>
</div>
<div>
<a href="#">Forgot password?</a>
</div>
</div>
<div class="form-group m-0">
<button type="submit" class="btn btn-secondary btn-block">
Login
</button>
</div>
</form>
Upvotes: 0
Views: 4099
Reputation: 461
Error icon in bootstrap 4.5 is implemented as a background image. So you can't attach a tooltip to it.
The simplest solution is to show tooltip on input's hover. But to achieve your goal we can add transparent background with an area that overlaps the error icon.
Template:
<div class="form-group">
<label>User Name</label>
<div class="form-control-wrapper">
<input type="text" name="name" class="form-control" [(ngModel)]="userName" #name="ngModel" [ngClass]="{ 'is-invalid': loginForm.submitted && name.invalid }" required>
<span
*ngIf="loginForm.submitted && name.invalid"
class="error-icon-hover-area"
data-toggle="tooltip"
data-placement="right"
title="User Name is required"
></span>
</div>
</div>
Styles:
.form-control-wrapper {
position: relative;
}
.error-icon-hover-area {
position: absolute;
background-color: transparent;
width: 40px;
height: 100%;
top: 0;
right: 0;
}
Note, I've used twitter bootstrap tooltip, but you can use your own.
Upvotes: 1