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的一篇文章中找到了下面的代码,我知道#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

每当对象失去焦点(即有人按下制表符或单击下一个输入框)时,都会触发模糊事件。注意“。” 表示一个类,而“#”是一个 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 回答