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

标签 javascript jquery substring substr

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

下面的代码会提示值:“com”

var email = "blah@test.com";
alert(email.toLowerCase().substr(email.length - 3, 3));

但是,这段获取输入值的代码会发出一个值:“om”

alert($("#email").val().toLowerCase().substr($("#email").length - 3, 3));

谁能给我解释一下为什么上面两行代码有不同的结果?

这是一个JSFIDDLE

最佳答案

尝试传递文本框长度,而不是选中元素长度 ,

alert($("#email").val().toLowerCase().substr($("#email").val().length - 3, 3));
//-------------------------------------------------------^^^^^

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

var value = $("#email").val().toLowerCase();
alert(value.substr(-3)); 

以负数传递起始值将从后面剥离字符串。

DEMO

关于javascript - 使用变量与获取输入值时 substr() 的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36187672/

相关文章:

javascript - 如何从 javascript 或 jquery 单击 anchor 标记

jquery - 如果我使用空 url 调用 jQuery.post() 会发生什么?

r - 每 n 个字符拆分字符串新列

JavaScript:String 和 Array 上 indexOf 方法的效率差异

javascript - js : stop mouse movement

php - 根据条件从已解析的 HTML 文档中删除 HTML 元素

javascript - 在List onclick事件中添加数据

javascript - TypeScript 1.8,多个 .ts 文件中的单个文件 - 应用程序结构

javascript - MVC 和 javascript 新方法;问 : May I have problems in future with this approach?

jquery - 如何禁用 twitter bootstrap 3 中的折叠功能?