Javascript:检查输入中的单词是否位于其他单词之后



我有一个问题,但找不到问题的答案。希望你能帮助我!

这是我的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)) {
...
}

最新更新