/ / имам проблем при проверка на имейл JavaScript - php, javascript, валидиране, имейл

Имам проблем в javascript имейл валидация - php, javascript, валидиране, имейл

имам проблем с валидирането на имейл 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">&nbsp;</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, което би било хубаво да се поддържа.)