联系人字段的 Javascript 验证

标签 javascript jquery

我正在尝试验证可以包含电子邮件地址或电话号码的字段。人们会如何去做这件事呢?我觉得我的代码很接近,但我有点卡在数字部分。

   if (($(this).find('#contactPhoneEmail').val().indexOf('@') != -1) && ($(this).find('#contactPhoneEmail').val().indexOf('@') != -1)){
      alert("You did not enter a valid contact type"); 
      return false; // prevents submitting
    }

在伪代码中,我正在尝试类似以下内容:

“如果该字段不包含“@”和“数字”,则会发出警报”

我知道它并不完全可靠,但它至少会阻止人们输入字母字符。我的表单使用相同的字段来允许人们选择电子邮件地址或电话号码。我也考虑过做类似以下的事情

“如果它确实只包含数字,那么请确保它的格式正确”但是我意识到电话号码类型有很多种,而且似乎无法确定。

大家觉得怎么样?

最佳答案

使用正则表达式:

function isEmail (s) {
    var isEmail_re = /^\s*[\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*\s*$/;
    return String(s).search (isEmail_re) != -1;
}

function isPhoneNumber (s) {
    var isPhoneNumber_re = /^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$/;
    return String(s).search (isPhoneNumber_re) != -1;
}

您的验证函数将如下所示:

function validate () {
     var input = $(this).find('#contactPhoneEmail').val();
     return isEmail(input) || isPhoneNumber(input);
}

关于联系人字段的 Javascript 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25193726/

相关文章:

javascript - 悬停时在不同的 div 上显示子菜单

javascript - 如何在用户单击提交按钮后立即创建图形页面模式

javascript - 2 个相似的模态

c# - JQuery .each 函数

javascript - 如何使用 jQuery DOM 操作动态构建/添加列表元素(ul、ol、li)?

javascript - jQuery/Javascript/HTML 将 div 转换为另一个动画

javascript - 如何检测浏览器是否能够通过拖放接收文件

javascript - 访问 Lightning 组件内项目的子项

javascript - 使用通用的空函数而不是在每个类实例中创建一个新函数是否更有效?

javascript - 采取特定行动达到某个数字