我必须检查表单字段是否在用户输入&开头包含'@'。它是否包含它。它可以正常检查它是否在字符串的开头。但是当我添加检查输入是否包含“@”时。它失败。这是我的代码
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; }
}
修改
此表单中的此功能正在检查@是否位于第1位和完全是否在输入中。
function @_valid(field)
{
var ref=field.update.value;// I needed ref 4 other things
var apos=ref.indexOf('@');
if (apos>=0 )
{
if (apos==0)
{
return true;
}
else { field.t_update3.value="";
alert('plz enter a valid refernce');
return false;
}
}
else { field.t_update3.value="";
alert('plz enter a valid refernce');
return false;
} }
答案 0 :(得分:1)
为什么不
if (apos !== 0) { /* error; */ }
当您的输入(据我所知)有效时,“apos”值将为数值零,无效时为-1或大于0。
这对于让您的网站用户这样做似乎很奇怪,但无论如何。 (如果它根本不存在,必须才有效,为什么不能为用户添加“@”?)
答案 1 :(得分:1)
考虑:
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
}
答案 2 :(得分:0)
您可以检查以确保其大于-1。 Javascript的indexOf()将返回您正在寻找的字符的当前索引,如果它不在字符串中,则返回-1。
编辑误读了一下。还要确保它不等于0,因此它不在字符串的开头。
答案 3 :(得分:0)
在第二个if
条件中,apos
是一个数字,而不是字符串。
你正在尝试写
if (field.update.value.charAt(0) == '@' && field.update.value.indexOf('@', 1) < 0)
答案 4 :(得分:0)
function email_valid(field)
{
var fieldValue =field.update.value;
var apos = apos.indexOf('@');
if (apos > 0 || apos < 0)//could also use apos !== 0
{ alert('plz enter valid input');
return false;
}
else
{ return true; }
}
apos
是indexOf返回的值,如果用户输入中没有@
,则为-1。如果它是第一个字符,它将为0。如果用户输入包含@
,则大于0。 JavaScript在String上没有contains
方法。
答案 5 :(得分:0)
尝试:
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');
在任何地方检查@
。或者,如果您想在开头检查@
,请将if( (apos < 0) ) {
更改为if( (apos == 0) ) {
。或者,如果您想确保它不在开头,那么if( (apos > 0) ) {
。
答案 6 :(得分:0)
将为-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; }
}
我还更改了您的初始分配以删除.update
部分,因为当field
是对输入的引用时,它会导致失败。
答案 7 :(得分:0)
了解正则表达式(如果还没有)。然后查找Javascript的String#match。没有必要找到输入以“@”开头,好像包含一个“@”,如果“@”位于字符串的开头,它也将返回true。
此外,免费,return true
和return false
通常是糟糕的风格。只需将传递的内容返回if
(评估为布尔值)。
总而言之:
function validate_input(str) {
return str.match(/@/);
}
我建议将函数传递给字符串(field.value
或某些 - 而不是字段本身),因为它使它更通用。
答案 8 :(得分:0)
更新:根据评论修改了答案。如果值在第一个字符处包含“@”符号,则以下代码仅返回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 = field.value;
如果没有对某些更适合命名的内容进行“电子邮件验证”,我也会重命名此功能。