Reputation: 33
I'm trying to create a simple validation method with jQuery, but without a plugin. So I made this code:
(function ($) {
$.fn.validate = function () {
var emailRegex = '^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$';
var error = false;
if ($('#vorname').val() == "") {
$('#vorname').after('<span class="error">Name fehlt</span>');
error = "true";
}
if ($('#nachname').val() == "") {
$('#nachname').after('<span class="error">Name fehlt</span>');
error = "true";
}
if ($('#email').val() == "") {
$('#email').after('<span class="error">Email fehlt</span>');
error = "true";
} else if (!emailRegex.test($('#email').val())) {
$('#email').after('<span class="error">Keine gültige Email</span>');
error = "true";
}
if (error == true) {
return false;
} else {
return;
true;
}
}
})(jQuery);
$(document).ready(function () {
$('#button').click(function () {
$('#button').validate();
});
});
But I'm getting always the message that my regex test isn't a function. What's the issue?
Upvotes: 2
Views: 1376
Reputation: 8900
You write:
var emailRegex = '^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$';
You might want to write:
var emailRegex = new RegExp('^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$');
// or simpler
var emailRegex = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/;
Upvotes: 3
Reputation: 4521
Your emailRegex
is defined as String
.
Define it as regexp like this.
emailRegex = /hogehoge/
Upvotes: 1