【问题标题】:Different outcome of substr() when using variable vs getting input value使用变量与获取输入值时 substr() 的不同结果
【发布时间】:2016-03-23 20:03:09
【问题描述】:

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

【问题讨论】:

  • $("#email").length$("#email").val().length 不同

标签: javascript jquery substring substr


【解决方案1】:

尝试传递文本框的valuelength,而不是selected elementslength

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

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

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

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

DEMO

【讨论】:

  • 当然,将$("#email").val() 存储在变量中而不是重复。
  • 哇,这么简单。谢谢! @Oriol 是的,我打算将它存储在一个变量中,这样就不会重复了。
  • @Jmh2013 很高兴为您提供帮助! :)
猜你喜欢
  • 2021-11-17
  • 2011-04-27
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多