I am trying to validate a form with couple of fields. In one field I have to validate email id, if the elements of the email ArrayList exist. Can anyone tell me where I'm doing wrong? Any solution or other way around? Thanks.
Here is JSP snippet where I'm getting all elements into ArrayList.
<%
ArrayList userEmails = getAllEmails();
//For test only. Its printing all Emails
for(Object email : userEmails)
System.out.println("Email: " + email);
request.setAttribute("userEmails", userEmails);
%>
Here is the JavaScript snippet:
<script type="text/javascript">
$.validator.addMethod('emailExist', function (value, element) {
<c:forEach var="email" items="${userEmails}">
return this.optional(element) || ${email}.test(value);
</c:forEach>
}, "Email already exist");
var validator = $('#EditUser').validate({
rules: {
Email: {
required: true,
email: true
},
... more fields
</script>
I can see following error messages but I also want to see "Email already exist".
Now, when I changed the above code (emailExist method) like this:
$.validator.addMethod('emailExist', function (value, element) {
<c:set var="userEmail" value="${value}"/>
<c:forEach var="email" items="${userEmails}">
<c:if test="${email eq userEmail}">
return this.optional(element) || ${email}.test(value);
</c:if>
</c:forEach>
}, "Email already exist");
Now the "Email already exist" message shows always, even its not exist. Even the message chages even entered a letter:
Here is HTML snippet:
<input type="email" id="Email" name="Email"class="required emailExist form-control">