Феникс имеет право основной ошибки. Но:
<td><input type="submit" value="Insert record" onclick="checkMail();"/></td>
Не помещайте проверку формы на отправку. Возможно отправить форму без нажатия кнопки «Отправить» (в зависимости от браузера и количества полей и кнопок в форме). Всегда помещайте это в саму форму:
<form ... onsubmit="return checkMail();">
также:
var reg = new RegExp('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}(com|ca|net|org|fr|us|qc.ca|gouv.qc.ca)$', 'i');
Это действительно плохая идея, как и большинство специальных «проверок электронной почты», она отклоняет многие полностью действительные адреса электронной почты. Ваши правила относительно того, какие имена пользователей и TLD разрешены, являются особенно бессмысленными и ограничительными.
См. это печально известное регулярное выражение , чтобы узнать, как на самом деле проверять адреса электронной почты. Тогда плачь, сдавайся и просто делай базовые проверки вместо этого. (Есть ли в нем "@"? Есть ли в нем "."? Пробелов нет? Тогда хорошо.)
(Даже page-long-horror-regex не может справиться с не-ASCII адресами электронной почты через IDN, что было бы неплохо поддерживать.)