0

私は持っている

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.
4

4 に答える 4

2

Scott Mermelstein の答えは良いです。JavaScript では回避することをお勧めします。!=また==、誤検知をスローする場合があるためです。!==and===は型強制を許可しないため、使用する習慣を身につけたほうがよいでしょう。

とはいえ、メソッドがあれば、配列内の文字列を簡単に見つけることができます.indexOf。ただし、そのメソッドは 1.6 で実装されたため、IE6 および IE7 では使用できません。IE8について正確にはわかりません。

これらのブラウザーが心配な場合は、 MDNにあるポリフィルを実装するか、次のような関数を記述できます。

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 に答える
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

ユーザーが入力した電子メールがブラックリストに含まれているかどうかを確認するには:

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 に答える