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进行验证仅用于实用性。不是为了安全!