关于javascript:强制文本字段成为有效的电子邮件?

Forcing a text field to be a valid email?

本问题已经有最佳答案,请猛点这里访问。

我想知道是否可以强制输入字段成为有效的电子邮件?

如果可能的话,我希望它使用javascript/jquery而不是php!

谢谢你的帮助。


只支持较新的浏览器?试试这个:

1
<input type="email" name="emailaddress">

请注意,支持有些有限,但如果它属于以下浏览器,则可能对您有用:

http://canius.com/feat=forms

相关说明:

在javascript中验证电子邮件地址?


1
2
3
4
function IsEmail(email) {
    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return regex.test(email);
}


您可以使用@mike robinson给出的答案以及一些简单的验证(在这里找到)作为旧浏览器的回退:

HTML:

1
<input type="email" name="emailaddress" id="valid_email">Please enter a valid email!

JS:

1
2
3
4
5
6
7
8
9
10
11
12
$('.validate').hide();
$('body').on('blur', '#valid_email', function() {
    $('.validate').hide();
    if(!isValidEmailAddress($(this).val())) {
       $('.validate').show();
    }
});

function isValidEmailAddress(emailAddress) {
    var pattern = new RegExp(/^[a-zA-Z0-9.!#$%&*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/i);
    return pattern.test(emailAddress);
};

小提琴

或者,更简单地说,您可以只使用jquery验证插件。

您还需要在后端进行验证,您可以使用PHP过滤器进行验证:

1
2
3
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // do something if email is valid
}


javascript不知道电子邮件是否有效。(至少不容易)要以动态方式执行此操作,您只有PHP选项。在JavaScript中,您只能使用Ajax通过事件来调用它。

编辑:防止误解

是的,您可以使用regex,也可以使用JS。但是你只能得到一个客户端的解决方案。另外,与浏览器相关的测试也不是真正的解决方案。输入的确认,是关于获得正确和安全的输入。只有使用PHP框架,才能防止用户发送错误的数据。或者至少,您使用了一些非常花哨的(我猜是昂贵的)JS框架,这可能会保护您。

如果我只是关闭javascript并使用一个旧的浏览器来避免验证会怎么样?使用HTML5和JavaScript进行验证仅用于实用性。不是为了安全!