使用变量vs获取输入值时substr()的不同结果

Jmh*_*013 3 javascript jquery substring substr

我有一些javascript,我在几个地方用来检查电子邮件地址的最后3个字符.我不明白为什么当我获取set变量的子串与获取输入值时得到不同的结果.

以下代码将提醒值:"com"

var email = "blah@test.com";
alert(email.toLowerCase().substr(email.length - 3, 3));
Run Code Online (Sandbox Code Playgroud)

但是,这个抓取输入值的代码会发出一个值:"om"

alert($("#email").val().toLowerCase().substr($("#email").length - 3, 3));
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释为什么上面两行代码有不同的结果?

这是一个JSFIDDLE

Raj*_*amy 6

尝试通过lengthvalue文本框,不是lengthselected elements,

alert($("#email").val().toLowerCase().substr($("#email").val().length - 3, 3));
//-------------------------------------------------------^^^^^
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳方法是,

var value = $("#email").val().toLowerCase();
alert(value.substr(-3)); 
Run Code Online (Sandbox Code Playgroud)

将起始值传递给负数将从后面删除字符串.

DEMO