0

我有

var two = document.getElementById('email').value;

我想将数组中的一些值与变量二中的值进行比较

email = two[gmail.com, yahoo.com]; // how to type this correctly

并在将电子邮件变量与用户插入的值进行比较后,如果用户从数组中插入了其中一个值,则发送警报('我们不接受免费电子邮件)。

if email = 0 // did not found any of the values listed in email = then return true.
4

4 回答 4

2

要查看用户输入的电子邮件是否在您的黑名单中:

var blacklist = ["gmail.com", "yahoo.com"]

然后使用indexOf查看用户输入和黑名单之间是否匹配:

if (blacklist.indexOf(userInput) == -1) { ... }
于 2013-10-02T18:17:46.057 回答
2

你是这个意思吗?

function validateEmail() {
    var two = document.getElementById('email').value;
    if (["gmail.com", "yahoo.com"].indexOf(two) != -1) {
        alert("We don't accept free e-mail");
        return false;
    }
    return true;
}

这会产生一个名为 的函数validateEmail。它获取您的email元素,并检查固定数组以查看它是否包含该元素。如果是,它会发送您的警报并返回 false,否则返回 true。

尝试猜测你想要什么而不是你要求什么:

首先,您可能希望数组成为它自己的变量。这通常是一种很好的做法,可以让您更轻松地修改数组 - 或在其他地方创建它。

var badEmails = ["gmail.com", "yahoo.com"];
if (badEmails.indexOf(two) != -1) {

更重要的是,您可能需要检查用户输入的整个电子邮件地址。如果two是标准电子邮件,您的函数会稍微复杂一些:

function validateEmail() {
    var two = document.getElementById('email').value;
    var badEmails = ["gmail.com", "yahoo.com"];
    for (var bad in badEmails) {
        if (two.indexOf(bad) != -1) {
            alert("We don't accept free e-mail");
            return false;
        }
    }
    return true;
}
于 2013-10-02T18:18:40.637 回答
2

我假设文本字段仅包含电子邮件的域部分(如“gmail.com”或 yahoo.com),而不是整个地址。

var two = document.getElementById('email').value;
var forbidden = ["gmail.com", "yahoo.com"];

var found = forbidden.indexOf(two );
if(found > -1)
{
    alert("We don't accept free e-mail");
}
于 2013-10-02T18:19:33.377 回答
2

Scott Mermelstein 的回答很好。我只想补充一点,在 JavaScript 中避免这种做法是一种很好的做法,!=因为==它们有时会抛出误报。最好养成使用的习惯,!==因为===它们不允许类型强制。

.indexOf也就是说,当您拥有该方法时,在数组中定位字符串很容易。但是,该方法是在 1.6 中实现的,因此 IE6 和 IE7 将无法使用它。不确定IE8到底是什么。

如果您担心这些浏览器,您可以实现在MDN上找到的 polyfill或编写如下函数:

function indexOf(arr, str) {
  if (typeof Array.prototype.indexOf === 'function') {
    return arr.indexOf(str);
  }
  for (var i = 0; i < arr.length; i += 1) {
    if (arr[i] === str) {
      return i;
    }
  }
  return -1;
}

此函数将返回数组内或-1不在数组内的字符串的索引。

于 2013-10-02T18:26:57.877 回答