1

我有这个 jQuery 代码,用于在用户键入时验证电子邮件输入:

$('#email').keyup(function() {
    if (!isValidEmailAddress(email)) {
        $('#validate').removeClass();
    } else {
        $('#validate').removeClass();
        $('#validate').addClass('validate');
    }
});​

但是,如果用户在键入例如“Da”时,浏览器会识别电子邮件并在“daniel@gmail.com”之类的下拉列表中显示一个完成它的选项,那么我可以在我的 jQuery 代码中使用什么事件来甚至当用户单击该下拉选项或单击输入以选择它时验证它...

提前致谢

4

3 回答 3

2

如果您使用 jquery 1.7+ 绑定 keyup 并使用相同的方法更改事件:

$("#email").on("change keyup", function() {
    $('#validate').toggleClass('validate', isValidEmailAddress(this.value));
});

你可以缩短你的代码,如果电子邮件有效,你只想添加css类“验证”(我认为#email是一个输入表单,你想验证它的值)。

请记住,jQuery 对象会返回您查找的集合,因此请保存$('validate')到一个变量并使用该变量,而不是让 jquery 一遍又一遍地查找元素(在您的代码中最多几次)。

如果您使用的是旧版本的 jQuery,只需更改为绑定

于 2012-08-07T21:30:34.967 回答
1

也许这个插件可以帮助您满足您的需求,然后将其与您已有的代码集成。

看看这个演示:

http://www.zurb.com/playground/jquery-text-change-custom-event

希望这可以帮助 :-)

于 2012-08-07T22:35:55.810 回答
0

使用 Keyup 和 Change:

$("#email").change(validate).keyup(validate);;

function validate()
{
if (!isValidEmailAddress(email)) {
        $('#validate').removeClass();
    } else {
        $('#validate').removeClass();
        $('#validate').addClass('validate');
    } 
}

小提琴示例:http: //jsfiddle.net/johnkoer/Z8Z7b/7/ ​</p>

于 2012-08-07T21:25:32.820 回答