Pattern attribute for Email validation is not working in html5 - html

Using Html5 I've a view which contains an email input field.
So to validate the correct email address I am using pattern attribute for validation.
But that is not working correctly, the problem I am facing here is though I enter invalid email address as abc#gmail the validation is not working.
i tested the same regex pattern in fiddler, it is working fine there, but coming to my application it is not working correctly. Please help me out with this.
Here is my view:
<form>
<input type="email"
class="form-control"
data-val="true"
data-val-required="please enter an email address"
pattern="[a-z0-9._%+-]+#[a-z0-9.-]+.[a-z]{2,4}$"
required>
<input type="submit" />
</form>

Regex should be
[a-z0-9._%+-]+#[a-z0-9.-]+.[a-z]{2,}$
instead of
[a-z0-9._%+-]+#[a-z0-9.-]+.[a-z]{2,4}$
So the html input would be:
<input type="email"
class="form-control"
data-val="true"
data-val-required="please enter an email address"
pattern="[a-z0-9._%+-]+#[a-z0-9.-]+\.[a-z]{2,}$"
required>
NOTE: difference in regex is {2,} and {2,4}

Related

AutoFill in input type ="text" in jsp without form tag (JSP)

I added an autofill in my text field but it's not working. Autocomplete attribute is undefined. I don't want to use form action. Also, I added easy-autocomplete.min.css, but still, autocomplete is not working.
<input type ="text" id="number" name ="number" placeholder="Please Enter Registered Number" autocomplete="on" class="form-control" value="" onkeypress="return validateNumeric(event)"><br>
You are right on track. You can use the autocomplete feature of HTML without nesting the input element inside a form.
You just need to change autocomplete="off" to autocomplete="tel" and the browser will start to show autocomplete.
"tel" notifies the browser that it is a telephone field and the browser will suggest from a list of saved telephone numbers.
For a list of supported values for autocomplete see this MDN Article on Autocomplete.
<input type ="text" id="number" name ="number" placeholder="Please Enter Registered Number" autocomplete="tel" class="form-control" value="" onkeypress="return validateNumeric(event)">
Working Fiddle here.

How to prefill the user input form?

I have a very basic form where I ask user's name, mobile, email. I have enabled autocomplete provision in these fields using the following code:
<label for="frmNameA">Name</label>
<input name="name" id="frmNameA" placeholder="Full name" required autocomplete="name">
<label for="frmEmailA">Email</label>
<input type="email" name="email" id="frmEmailA" placeholder="name#example.com" required autocomplete="email">
<label for="frmPhoneNumA">Phone</label>
<input type="tel" name="phone" id="frmPhoneNumA" placeholder="+1-650-450-1212" required autocomplete="tel">
Here is the fiddle. Currently, the user has to focus on these elements and then it displays the suggestions. Is there any way by which we can prefill this data once the form is loaded? We want to prefill the 1st suggestion that comes in the autocomplete and not some hard coded value.
Also, I saw websites like facebook, twitter etc. using only autocomplete and not prefilling the data - is there any specific reason to not prefill the things?
The autocomplete attribute specifies whether a form should have autocomplete on or off.
When autocomplete is on, the browser automatically complete values based on values that the user has entered before.
<form action="/action_page.php" method="get" autocomplete="on">
First name:<input type="text" name="fname"><br>
E-mail: <input type="email" name="email"><br>
<input type="submit">
</form>
You can store user values into the localStorage at completion, then load this values on page load.
This way, no need to hardcode datas, neither store server side.
// Store
localStorage.setItem("userconfig",mail.value)
// Fill data
onload = (function(){
mail.value = localStorage.getItem("userconfig")
})

How can I disable HTML5 form validation in Angular2 apps?

I have a form that contains an input of type email that is required. I would like to have my own custom validation on that input field in order to be able to show the error message in different languages. However, currently the input field is evaluated by the HTML5 validation.
The code looks like this:
<input [(ngModel)]="user.email" type="email" class="form-control" id="email" name="email" required placeholder="{{'Email'|translate}}">
Is it possible to disable that, so that I am able to implement my own validation?
The validation code is yet to be written.
Include tag with no validate attribute as below
<form action="Form" novalidate>
<input [(ngModel)]="user.email" type="email" class="form-control" id="email" name="email" required placeholder="{{'Email'|translate}}">
<input type="submit">
</form>

HTML5 email does not allow email with a period

The following email is not accepted with a period, is this a regular expression issue or some bug.
This works
abcdefg.jijklmn#abcdedghijklmnopgi.com
but the following doesn't (note uppercase letter in the email "A" and "J"), i think that is the problem
Abcdefg.Jijklmn#abcdedghijklmnopgi.com
Html element
<input type="email" class="form-control" name="email" pattern="[a-z0-9._%+-]+#[a-z0-9.-]+\.[![\[][1]][1]a-z]{2,3}$" required="" value=""/>
Error below
It's because your regex doens't allow capitals.. simply allow capitals..
[a-zA-Z0-9._%+-]+#[a-z0-9.-]+\.[![\[][1]][1]a-z]{2,3}$
Regular expressions for emails can be very difficult. However, you don't actually need to use a pattern to validate emails as type="email" does that for you. Simply remove the pattern entirely and the clients browser will validate the email for you using their in-built regex
<input type="email" class="form-control" name="email" required="true" value=""/>
I can't actually seem to get email validation to work with the pattern attribute at all, as I think it's competing with type="email".

how to check if the inputted email has "#" on it

i have a text field for email which is set to required, i want it to show a text that you need to include "#" on your email. like how it displays "fill out this field" when you pressed the button without typing anything on the field. How can i do it? Thanks.
EXAMPLE:
<input type="text" name="email" required>
You can try to use the type in case you are using HTML5 as:
<input type="email" name="email" required>
If you are not using the HTML5 then you need to use some scripting language like Javascript to check the validity. For example in Javascript it would be like:
if(!document.getElementById("email").checkValidity())
In case of PHP it would be like
if (filter_var($email, FILTER_VALIDATE_EMAIL))
You can check it by using (since HTML5):
<input type="mail" name="email" required>
It will display a warning if format is not correct (tooltip, or red color around the field, depending on your browser.
Or you can check it on the server side, once you form is sent. For example with PHP, you can use filter_var
Use pattern attribute,
<input type="text" name="email" pattern=".*[#]+.*" />
<input type="email" name="email" required />
More details are at: http://www.w3schools.com/tags/att_input_pattern.asp