在用户输入开始时检查@的javascript验证:不是电子邮件验证
我必须检查表单字段在用户输入开始时是否包含“@”,它是否包含它。它可以很好地检查它是否位于字符串的开头。但当我添加检查输入是否包含@时。它失败了。这是我的密码在用户输入开始时检查@的javascript验证:不是电子邮件验证,javascript,Javascript,我必须检查表单字段在用户输入开始时是否包含“@”,它是否包含它。它可以很好地检查它是否位于字符串的开头。但当我添加检查输入是否包含@时。它失败了。这是我的密码 function email_valid(field) { var apos=field.update.value; apos=apos.indexOf('@'); if (apos>0 ||((apos.contains('@')== 'FALSE')))
function email_valid(field)
{
var apos=field.update.value;
apos=apos.indexOf('@');
if (apos>0 ||((apos.contains('@')== 'FALSE')))
{ alert('plz enter valid input');
return false;
}
else
{ return true; }
}
编辑
此表单中的此函数检查@是否位于第一位,第二位是否位于输入中
您只需检查以确保apos大于-1。Javascript的indexOf()将返回要查找的字符的当前索引,如果字符串中没有,则返回-1 编辑有点误读。还要确保它不等于0,以便它不在字符串的开头。为什么不只是
if (apos !== 0) { /* error; */ }
当您的输入(据我所知)有效时,“apos”值将是数字值零,当输入无效时为-1或大于0
这似乎是一个奇怪的事情,让你的网站的用户做,但无论如何。(如果它根本不存在,并且它必须存在才能有效,为什么不能为用户添加“@”?在第二个
条件中,apos
是一个数字,而不是字符串
你在试着写作
if (field.update.value.charAt(0) == '@' && field.update.value.indexOf('@', 1) < 0)
if(field.update.value.charAt(0)='@'和&field.update.value.indexOf('@',1)<0)
功能电子邮件\u有效(字段)
{
var fieldValue=field.update.value;
var apos=apos.indexOf('@');
if(apos>0 | | apos<0)//也可以使用apos!==0
{警报('plz输入有效输入');
返回false;
}
其他的
{返回true;}
}
apos
是返回的值,如果用户输入中没有@
,则该值将为-1。如果是第一个字符,则为0。如果用户输入包含@
,则该值将大于0。JavaScript在字符串上没有包含方法。尝试:
function email_valid(field) {
//var apos=field.update.value;
var apos = field;
//apos=apos.indexOf('@');
apos = apos.indexOf('@');
if( (apos < 0) ) {
//alert('plz enter valid input');
alert('false');
} else {
alert('true');
}
}
email_valid('blah');
功能电子邮件\u有效(字段){
//var apos=field.update.value;
var-apos=场;
//apos=apos.indexOf('@');
apos=apos.indexOf('@');
如果((载脂蛋白<0)){
//警报(“plz输入有效输入”);
警报(“假”);
}否则{
警报(“真”);
}
}
电子邮件无效(“废话”);
在任何地方检查@
。或者,如果要在开始时检查@
,请将if((apos<0)){
更改为if((apos==0)){
。或者,如果要确保它不在开始处,则如果未找到字符串,则if((apos>0)){
apos将为-1。因此,您的代码应如下所示:
function email_valid(field)
{
var apos=field.value;
apos=apos.indexOf('@');
if (apos<=0) // handles '@' at the beginning and not in string at all.
{
alert('plz enter valid input');
return false;
}
else
{ return true; }
}
功能电子邮件\u有效(字段)
{
var apos=字段值;
apos=apos.indexOf('@');
if(apos如果您还没有了解正则表达式,那么请查找Javascript。无需查找输入是否以“@”开头,就好像它包含一个“@”,如果“@”位于字符串开头,该“@”也将返回true
另外,免费的,return true
和return false
通常是不好的样式。只需将传递给if
(计算结果为布尔值)的内容返回即可
总而言之:
function validate_input(str) {
return str.match(/@/);
}
我建议给函数传递一个字符串(field.value
或类似的字符串),而不是字段本身,因为它使函数更通用。更新:根据注释修改答案。只有当值在第一个字符处包含“@”符号时,下面的代码才会返回true
如果这是一个JavaScript问题,那么这应该没问题
function email_valid(field){
var apos=field.update.value;
if(apos.indexOf('@') != 0){
alert('plz enter valid input');
return false;
} else {
//field contains an '@' at the first position (index zero)
return true;
}
}
也就是说,如果您的参数“field”实际上是指一个输入字段元素,那么它应该只需要此代码来获取值(例如,我不确定“.update”位在哪里起作用)
如果此函数没有进行“电子邮件验证”,我也会将其重命名为更合适的名称。考虑:
var apos = value.indexOf('@');
if (apos >= 0) {
// was found in string, somewhere
if (apos == 0) {
// was at start
} else {
// was elsewhere
}
} else {
// not in string
}
及
@cdhowie,不,这不是电子邮件验证。输入开始时我需要“@”。field.update.value
?什么是update
子项?@exceptive:Oops,对不起。我仍然更正了你的标题,因为这与PHP没有任何关系。@cdhowie,但我没有添加PHPtag@scunliffe:在任何屏幕上都没有$
前缀变量。这不能是PHP.How数字?因为它将包含输入的值user@XCeptable:在您编写apos=apos.indexOf('@')之后
@Pointy,该条件是否会检查两个@是否都位于输入的第一位&它也存在于输入中???@Exceptable:是。apos
如果字符不存在,则为-1;如果字符存在,则大于0,但不作为第一个字符。返回值0表示“字符在字符串中,它出现在最开始的地方。”这不会检查它是否在以后出现。是的,它会检查。如果“@”出现在字符串中第一个字符之后的某个位置,则“apos”将是一个正数。据我所知,整点都是为了确保输入字符串以”@"字符。现在,考虑到这个问题的奇怪措辞,我当然可能是错的。@Pointy,实际上我想确保,正如SLaks所说的,要么它在1,要么它根本不在字符串中。这根本不是检查任何东西。我已经做了一个函数,它在我想要的情况下工作,我在EDIT2sholsinger中输入,它在一个时间内不检查任何东西ll在发布这个问题之前,我尝试了这个,即(apos>0 | | apos<0),但它不起作用。!==0正如Pointy提到的那样也不起作用。我在编辑中添加了代码,可以很好地检查这两个条件。虽然我自己做了,但它与您的答案完全相同(我添加到编辑中).也许你的回答帮助我获得了信心,我的解决方案不仅仅是一种权宜之计。非常感谢
function email_valid(field){
var apos=field.update.value;
if(apos.indexOf('@') != 0){
alert('plz enter valid input');
return false;
} else {
//field contains an '@' at the first position (index zero)
return true;
}
}
var apos = field.value;
var apos = value.indexOf('@');
if (apos >= 0) {
// was found in string, somewhere
if (apos == 0) {
// was at start
} else {
// was elsewhere
}
} else {
// not in string
}
var apos = value.indexOf('@');
if (apos == 0) {
// was at start
} else if (apos > 0) {
// was elsewhere
} else {
// not in string
}