Javascript 函数返回-1值

Javascript 函数返回-1值,javascript,Javascript,我有一个脚本,我正在努力工作。基本上,我要做的是防止有人在字段中输入特殊字符 我的职能如下: var iChars = "!@#$%^&*()+=[];,./{}|<>?;"; if (field1.value.indexOf(iChars) !=-1) { alert ("problem") } var iChars=“!@#$%^&*()+=[];,./{}|?;”; if(field1.value.indexOf(iChars)!=-1) { 警

我有一个脚本,我正在努力工作。基本上,我要做的是防止有人在字段中输入特殊字符

我的职能如下:

var iChars = "!@#$%^&*()+=[];,./{}|<>?;";
if (field1.value.indexOf(iChars) !=-1)

  { 
    alert ("problem")
  }
var iChars=“!@#$%^&*()+=[];,./{}|?;”;
if(field1.value.indexOf(iChars)!=-1)
{ 
警报(“问题”)
}
我遇到的问题是,字段正在搜索与iChars变量的精确匹配,而不是匹配任何单个值。例如,如果我创建一个var test=“one”并在字段中输入“one”,它会返回错误,但如果我在字段中输入“o”,它不会返回任何内容,只会传递到脚本的下一部分-但如果我输入“none”或“oneeee”,它会推送错误通过

有人帮我修这个吗?我试着研究indexOf的数组,但并没有真正理解它,所以如果您打算建议它,请您尽可能详细地解释一下

谢谢你可以用

var value = field1.value;

for (var i = 0, length = value.length; i < length; i++) {
    if (iChars.indexOf(value.charAt(i)) != -1) {
       alert('Problem!');
       break;
    }
}
var值=field1.value;
对于(变量i=0,长度=value.length;i
问题是您正在用户输入中查找整个
iChars
字符串的索引。实际上,您要做的是查看输入字符串中是否有
iChars
中的任何字符。为此,请使用
for
循环

var iChars = "!@#$%^&*()+=[];,./{}|<>?;";
var i;
for (i = 0; i < iChars.length; i++) {
  if (field1.value.indexOf(iChars[i]) !== -1) {
    alert("problem");
    break;
  }
}
var iChars=“!@#$%^&*()+=[];,./{}|?;”;
var i;
对于(i=0;i
您也可以只检查正则表达式:

var iChars = /[!@#$%^&*()+=[\];,./{}|<>?;]/;
if (iChars.test(field1.value)) {
    alert("problem");
}
var iChars=/[!@$%^&*()+=[\];,./{}124;?;]/;
if(iChars.测试(字段1.值)){
警惕(“问题”);
}

这种方法应该比自己迭代字符串中的每个字符更有效,而且对于正则表达式训练有素的人来说(或者至少在我看来是有偏见的),阅读起来更简单。

效果很好,但是有没有办法将警报的数量限制为一个?如果我投入!!我将收到两个警报,我可以抑制它吗?@Umeed
中断应将其限制为一个警报。