如何使用JQuery检查输入(电子邮件)字段是否包含特殊字符

How can you check if an input (email) field contains a special character using JQuery

本文关键字:字段 是否 包含 特殊字符 电子邮件 何使用 JQuery 检查 输入      更新时间:2023-09-26

目前,我正在使用以下代码,但它似乎不起作用。如果用户未能在输入字段中输入"@"符号,我想抛出一个错误。请耐心等待。谢谢

我的以下代码是:

var emailaddressVal = $("input[name='emailAddress']").val().split('@').slice(1)[0].trim();
if(emailaddressVal .match(/@/) !== null) {
    alert('An @ symbol was not entered');
} 

看起来你做的工作比你需要做的多得多。你的split()调用会搜索坏字符,所以你可以停下来看看字符串是否被拆分。但这并不是一个非常明确的方式来表达你的意图。

如果您正在查找特定的字符,则不需要正则表达式。

为什么不只是

if ( $("input[name='emailAddress']").val().indexOf('@') > -1 ) { 
    /* we found an '@' character; handle as you like */ 
} else {
    /* NOT FOUND, handle as appropriate */
    alert("Missing a required '@' character");
}

如果indexOf找到字符串,则返回一个非负值。看见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf

indexOf出了什么问题?它并不总是那么复杂:

<input type="text" id="test">
document.getElementById('test').onkeyup = function() {
    if (this.value.indexOf('@')>-1) {
        alert('error');
    }        
}    

或jQuery

$("#test").on('keyup', function() {
    if ($(this).val().indexOf('@')>-1) {
        alert('error');
    }        
});    

演示->http://jsfiddle.net/t49xdx56/