验证表单JavaScript

验证表单JavaScript,javascript,validation,Javascript,Validation,我试图验证表单中的一些字段 我想检查他们是否输入了所需字段的正确区号 区号应为212、313或414 这是我的家庭作业,所以我不能使用正则表达式,我不是真的在问答案,但这是我试图使用的,但它们中没有一个对我有效 if (input.substr(0,2) != 212|| input.substr(0,2) != 313 || input.substr(0,2) != 414) Message += " <p>Sorry but you have en

我试图验证表单中的一些字段

我想检查他们是否输入了所需字段的正确区号

区号应为
212
313
414

这是我的家庭作业,所以我不能使用正则表达式,我不是真的在问答案,但这是我试图使用的,但它们中没有一个对我有效

if (input.substr(0,2) != 212|| input.substr(0,2) != 313 || input.substr(0,2) != 414)
                Message += " <p>Sorry but you have enter wrong area code!!!</p>";
if(input.substr(0,2)!=212 | | input.substr(0,2)!=313 | | input.substr(0,2)!=414)
消息+=“对不起,您输入了错误的区号!!!

”;
我试过使用
子字符串
索引
,但实际上我不知道它们中的任何一个在这种情况下是否正确

是否仍然需要验证,但不需要使用正则表达式

谢谢你试试这个

if (input.substr(0,3) != 212|| input.substr(0,3) != 313 || input.substr(0,3) != 414)
      Message += " <p>Sorry but you have enter wrong area code!!!</p>";
if(input.substr(0,3)!=212 | | input.substr(0,3)!=313 | | input.substr(0,3)!=414)
消息+=“对不起,您输入了错误的区号!!!

”;
虽然我没有测试它


<input type="text" id="num"/>
<div id="msg"></div>

// This should run in a window.onload or $(document).ready() block
var num = document.getElementById('num'),
    msg = document.getElementById('msg');

num.onblur = function(){
    var areacodes = '212|313|414|',
        areacode = this.value.replace(/[^0-9]/, '').substring(0,3),
        message = 'Area code validates.';

    if (areacode.length < 3 || areacodes.indexOf(areacode + '|') === -1) {
        message = "Sorry but you have entered an invalid area code.";
    }

    msg.innerHTML = message;
};
//这应该在window.onload或$(document).ready()块中运行 var num=document.getElementById('num'), msg=document.getElementById('msg'); num.onblur=函数(){ 变量区域代码='212 | 313 | 414 |', areacode=此.value.replace(/[^0-9]/,'')。子字符串(0,3), 消息='区号验证'; 如果(areacode.length<3 | | areacodes.indexOf(areacode+“|”)=-1){ message=“对不起,您输入的区号无效。”; } msg.innerHTML=消息; };

input
我猜是一个
string
变量,而不是指向
input
元素的
DOM
注释。

这不应该吗

var str = input.trim().substr(0,3);
if ( !{212:1, 313:1, 414:1}[ str ] ){
    Message += " <p>Sorry but you have enter wrong area code!!!</p>";
}
var str=input.trim().substr(0,3);
如果(!{212:1313:1414:1}[str]){
消息+=“对不起,您输入了错误的区号!!!

”; }
为什么substr的第一个参数在增加?输入可以是212、313或414中的一个。我猜您的代码将验证
313
414
在错误的位置区号将仅来自索引
0-2
我认为应该立即输入值,我已经编辑过了。@Chibuzo谢谢,但一旦我尝试过,它仍然不起作用,我不知道为什么。您是否尝试过确保输入有值?尝试调用
alert(input)
,看看会发生什么。主要问题是子字符串(0,2)只提供2个字符。不是三个。但是您还应该将比较切换到字符串并使用==@KshitijMehta是的,我得到的值是正确的,我可以验证代码的其余部分,除了确保区号是否正确。@AutoSponge如果是这样的话,我将尝试使用3。@AutoSponge感谢您指出这一点,这是问题之一:染料
input
只是我从字段值中指定的名称,编辑我测试过,但它不起作用:(我发现问题是
(0,2)
它应该是
(0,3)
是的,它应该是三个。我还为非数字字符添加了一个规范化器:当他说“这是家庭作业,所以我不能使用正则表达式”时,答案是什么?@LarryBattle-验证本身与正则表达式无关,我补充了这一点,以证明
(212)
无法验证的一点,尽管许多人会输入此值。我还注意到我将正则表达式放在错误的位置。从技术上讲,删除它,它仍然“有效”,只是无法匹配输入的所有形式的区号。