我在几个地方使用了一些 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/