我有一个问题,但找不到问题的答案。希望你能帮助我!
这是我的HTML:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="one">
<input type="text" id="two">
这是我的Javascript:
$('#one').on('input', function(){
var value = $(this).val();
if (value.includes("@") && value.includes(".com"))
{
$('#two').focus();
}
});
演示
这个脚本的作用
我正在制作一个登录表单,当用户键入电子邮件时,输入集中在第二个输入上。在我的代码中:当第一个输入检测到"@"符号和文本".com"时,它会关注下一个输入
但问题是
假设您的电子邮件是:'john.computer@gmail.com"。我的脚本集中在键入"@"符号后的第二个输入上,因为该输入已包含".com"one_answers"@"。
我的问题
我需要添加什么javascript来检查"@"符号后是否键入了".com"?
您可以使用正则表达式:@.*.com
if (/@.*.com/.test(value))
您可以使用indexOf()
(文档(
if (value.includes("@") && value.includes(".com") && value.indexOf("@") < value.indexOf(".com"))
我只是找到两个位置并进行比较。应该在比.com
更早的索引中找到@
。然而,您的代码中存在另一个问题。这并不是所有的电子邮件都以.com
结尾。这里有一些解决方案来解决这个问题,或者你可以只使用这个
if (value.includes("@") && value.includes(".") && value.indexOf("@") < value.indexOf("."))
用户输入有效的电子邮件地址后,您似乎想要更新焦点。关于这方面的提示,请查看这个经典问题的答案:What';用JavaScript验证电子邮件地址的最佳方法是什么?
要更直接地回答您的问题,您可以创建一个正则表达式(RegExp(来检查.com
是否在@
符号之后键入。
const comAfterAtSymbol = new RegExp('@.*.com')
if (comAfterAtSymbol.test(value)) {
...
}