【发布时间】:2016-12-29 19:11:06
【问题描述】:
期望:
我正在 Angular 中处理登录表单。用户可以使用电子邮件/电话登录。我需要在单个文本框中验证电子邮件/电话。
现场场景:
Facebook 在登录中实现了相同类型的功能。我们可以通过电子邮件/电话登录 Facebook。但根据研究,Facebook 通过执行服务器端验证而不是客户端验证来验证用户数据。
到目前为止尝试过:
function validate() {
var textBoxValue = document.getElementById('emailphone').value;
var emailPattern = /^[a-z][a-zA-Z0-9_]*(\.[a-zA-Z][a-zA-Z0-9_]*)?@[a-z][a-zA-Z-0-9]*\.[a-z]+(\.[a-z]+)?$/;
if(textBoxValue == '') {
alert('Please enter value');
return false;
} else if(isNaN(textBoxValue)) {
if(!(textBoxValue.match(emailPattern))) {
alert('Please enter valid email');
return false;
}
} else {
if(textBoxValue.length != 10) {
alert('Please enter valid phno');
return false;
}
}
}
<input type="text" name="emailphone" id="emailphone"/>
<input type="submit" value="Validate" onclick="validate()">
我可以使用纯 JavaScript 实现此功能,但我想使用 ng-pattern 在 Angular 中实现它,或者如果在 Angular 中有任何解决方法。
我在 SO 上找到了这篇文章,但没有按照我的预期工作。
Validation for email or phone number for same text field in angularjs
【问题讨论】:
-
codepen.io/rpdasilva/pen/DpbFf 我最喜欢的电话指令。不完全适用于您的情况,但可能有助于查看。
-
您在其他问题的答案中发现“没有按照 [您的] 期望工作”是什么?因为这非常接近这个问题的完全重复。
-
@MikeMcCaughan 验证未按我的预期工作。当我尝试输入字母时,它会显示一条错误的错误消息,提示我尝试输入电子邮件时电话号码无效。
-
如果您想对击键进行验证,它不会知道您输入的是电子邮件还是电话号码。如果您希望在他们离开该字段时进行验证,请添加
ng-model-options="{ 'updateOn': 'blur' }"。
标签: angularjs validation ng-pattern