имам проблем с валидирането на имейл JavaScript, Написах код нещо като,
//emp.php
<form action="<?php echo $editFormAction; ?>" method="post" name="form2" id="form2" >
<table>
<tr valign="baseline">
<td nowrap="nowrap" align="right">Desired Email-ID:</td>
<td><input type="text" name="emp_email" value="" size="32" onsubmit="checkMail()";/></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right"> </td>
<td><input type="submit" value="Insert record" onclick="checkMail();"/></td>
</tr>
</table>
</form>
// java scrit код за checkMail ()
<script language="javascript">
function checkMail() {
var email=document.getElementById("emp_email").value;
var mail = email.value;
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");
if(!reg.test(mail) || mail == "")
{
alert("Your email address isn"t valid!");
return false;
}
else {
alert("Email address is okay, let"s send the form!");
}
}
</script>
Plz помогнете ми благодаря предварително
Отговори:
0 за отговор № 1Опитайте да преместите функцията javascript, изключете бутона за изпращане и върху събитие onblur в самото поле за електронна поща.
5 за отговор № 2
Проблемът е, че няма елемент с id
emp_email.
Вашият елемент има име emp_email. Добавете атрибут id в текстовото поле.
<input type="text" name="emp_email" value="" size="32" onsubmit="checkMail()";/>
променете го
<input type="text" name="emp_email" id="emp_email" value="" size="32" onsubmit="checkMail()";/>
Редактиране: За да поставите валидирането на JavaScript при промяна на бутона за изпращане
<input type="submit" value="Insert record" onclick="checkMail();"/>
да се
<input type="submit" value="Insert record" onClick="return checkMail();" />
и премахнете събитието на изпращане от текстовото поле на имейла.
1 за отговор № 3
Phoenix има основната грешка вдясно. Но:
<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");
Това е наистина лоша идея, като повечето ad-hoc„E-mail validation“ се регексира, той ще отхвърли много напълно валидни имейл адреси. Вашите правила за това, какви потребителски имена и TLD са разрешени, са особено, безсмислено, ограничителни.
виждам този скандален регекс за това как да всъщност валидиране на имейл адреси. След това плачете, откажете се и просто направете основни проверки вместо това. (Има ли "@" в него? Има ли "." В него? Няма ли интервали? Добре тогава.)
(Дори страница-long-horror-regex не може да се справи с не-ASCII имейл адреси чрез IDN, което би било хубаво да се поддържа.)