我有
var two = document.getElementById('email').value;
我希望将数组中的某些值与变量2中的值进行比较
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.
答案 0 :(得分:2)
要查明用户输入的电子邮件是否在您的黑名单中:
var blacklist = ["gmail.com", "yahoo.com"]
然后使用indexOf查看用户输入和黑名单之间是否匹配:
if (blacklist.indexOf(userInput) == -1) { ... }
答案 1 :(得分: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;
}
答案 2 :(得分: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");
}
答案 3 :(得分:2)
!=
和==
是一种很好的做法,因为它们有时会抛出误报。最好养成使用!==
和===
的习惯,因为它们不允许类型强制。
也就是说,当您使用.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
。