【问题标题】:validate form JavaScript验证表单 JavaScript
【发布时间】:2012-04-15 16:38:04
【问题描述】:

我正在尝试验证表单中的某些字段。

我想检查他们是否输入了正确的必填字段的区号。

区号应为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>";

我尝试过使用 substring indexOf,但我真的不知道在这种情况下它们都不是正确的。

是否有验证但不使用正则表达式的方法?

谢谢

【问题讨论】:

  • 您是否尝试过确保输入具有值?尝试致电alert(input) 看看会发生什么。
  • 主要问题是 substring(0, 2) 只给你 2 个字符。不是三个。但是您还应该将比较切换为字符串并使用 !==
  • @KshitijMehta 是的,我得到的值是正确的,我可以验证其余代码,但要确保区号是否正确。
  • @AutoSponge 如果是这样的话,我将尝试使用 3。
  • @AutoSponge 感谢您指出这一点,这是问题之一:D

标签: javascript validation


【解决方案1】:

这不应该工作吗?

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>";
}

【讨论】:

    【解决方案2】:
    <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;
    };
    

    http://jsfiddle.net/userdude/gfJWX/1

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

    【讨论】:

    • 是的input 只是我从字段值中分配的名称,编辑我测试过但它不起作用:(
    • 我发现问题是(0,2) 它应该是(0,3)
    • 是的,应该是三个。我还为非数字字符添加了一个规范化器:jsfiddle.net/userdude/gfJWX
    • 当他说“这是作业,所以我不能使用正则表达式”时,这是怎么回答的?
    • @LarryBattle - 验证本身与正则表达式无关,我补充说是为了证明(212) 不会验证的一点,尽管很多人会输入这个。我还注意到我在错误的位置使用了正则表达式。从技术上讲,删除它,它仍然会“工作”,只是不会匹配输入区号的所有形式。
    【解决方案3】:

    试试这个

    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>";
    

    我没有测试过

    【讨论】:

    • 为什么substr的第一个参数变大了?输入可以是 212、313 或 414 之一。
    • 我猜您的代码将验证 313 和 414 的位置错误,区号仅来自索引 0-2
    • 我认为应该立即输入这些值,我已经对其进行了编辑。
    • @Chibuzo 谢谢,但是一旦我尝试了它仍然无法正常工作,我不知道为什么。
    猜你喜欢
    • 2015-12-04
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 2011-01-20
    相关资源
    最近更新 更多