0

私はこのhtmlコードを持っています:

<p>
 <label for="email">E-mail</label>
 <input id="email" name="email" placeholder="ex: email@gmail.com"/>
</p>        
<p>
<label for="email_alt">E-mail Alternativo</label>
<input id="email_alt" name="email_alt" />
</p>

実行時にメールが一致するかどうかを検証したいと思います。

ここのstackoverflowの投稿の1つで以下のコードを見つけました。#author_emailと#author_confirm_emailが入力のIDであることを理解しています。そして、私が知っている限り、.blur は実行時にアラートをトリガーすることです。しかし、機能をトリガーする「.email」がわかりません。私が持っているコードを考慮して、そこで何を使用できますか?

   $(".email").blur(function(){
  //check to two here.
  if ($("#author_email").val() != $("#author_confirm_email").val())
  {
    //do something
  }
});
4

3 に答える 3

2

オブジェクトがフォーカスを失うたびに (つまり、誰かがタブを押すか、次の入力ボックスをクリックすると)、blur イベントがトリガーされます。「。」に注意してください。はクラスを表し、「#」は ID を表します。したがって、そのコードでは、「email」というクラス名を持つ何かがフォーカスを失うたびに、その検証関数が呼び出されます。

于 2012-07-14T20:46:38.353 に答える
1

実行時 (つまり、ユーザーが入力している間) にフィールドをチェックしたい場合は、keyupイベントを使用する必要があります (このイベントは、ユーザーがキーを押したり離したりするたびに発生します)。

$("#email_alt").keyup(function(){
    if ($("#email").val() != $("#email_alt").val()) {
        // emails don't match
    }
});

これをテストしませんでしたが、実際にはそのように動作するはずです。

空のフィールドを防ぎ、有効な電子メールアドレスを保証するなど、さらに検証を追加することをお勧めします (GTSouza が提案したように)。

于 2012-07-14T21:24:38.183 に答える
0

///

input#email

///

input#email-confirm

///

function IsValidEmail(a){var b=/^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;return b.test(a)}

var validate = true;
$('input[name*="email"]:visible', $(this)).each(function(index, field){
            if(!IsValidEmail($(field).val()) && validate){
                $(field).focus().addClass('invalid');
                validate = false;
                return false;
            }

            var confirm = $('#'+$(field).attr('id')+'-confirm');
            if(confirm.size() > 0){
                if($(field).val() != $(confirm).val()){
                    $(field).focus().addClass('invalid');
                    validate = false;
                    return false;
                }
            }
        });
于 2012-07-14T20:44:40.027 に答える