【问题标题】:Javascript: Field validationJavascript:字段验证
【发布时间】:2014-01-03 10:06:11
【问题描述】:

所以我一直在互联网上寻找一些简单的 javascript 代码,当字段为空时,我可以发出警报,而当 @ 不存在时,我会发出不同的警报。我一直在寻找正则表达式、html 和不同的插件。但是,我需要在纯 Javascript 代码中执行此操作。任何想法如何以简单的方式完成?

如果您认为这个问题不属于这里或很愚蠢,请指出我可以找到此信息的地方,而不是侮辱我。我几乎没有使用 javascript 的经验。

function test(email, name) {


}

【问题讨论】:

    标签: javascript validation email field


    【解决方案1】:

    如果您想验证电子邮件,请使用以下代码和给定的正则表达式:

    <input type="text" name="email" id="emailId" value="" >
    <button onclick = "return ValidateEmail(document.getElementById('emailId').value)">Validate</button>
    <script>
         function ValidateEmail(inputText){  
               var mailformat = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;  
           if(inputText.match(mailformat)) {  
             return true;  
           }  
           else {  
               alert("You have entered an invalid email address!");  
               return false;  
           }  
        } 
    </script>
    

    或者如果您想检查空白字段,请使用以下内容:

    if(trim(document.getElementById('emailId').value)== ""){
       alert("Field is empty")
    }  
    // For @ 
    var textVal = document.getElementById('emailId').value
    if(textVal.indexOf("@") == -1){
      alert(" @ doesn't exist in input value");
    }
    

    这里是小提琴:http://jsfiddle.net/TgNC5/

    【讨论】:

    • 我忘了在我的问题中写这个,但我无法触摸 html 代码,并且目前没有可以连接到的 id。
    【解决方案2】:

    您必须找到要检查的元素对象(文本框等)。

    <input type="text" name="email" id="email" />
    

    在 JS 中:

    if(document.getElementById("email").value == "") { // test if it is empty
        alert("E-mail empty");
    }
    

    这是非常基本的。使用正则表达式你可以测试,如果它是真正的电子邮件,或一些垃圾。我建议阅读一些有关 JS 和 HTML 的内容。

    【讨论】:

    • 也许将其更改为:trim(document.getElementById("email").value) == "",因为如果该值仅包含一个空格,您的代码会将其读取为已填充。
    • 是的。但是还是不够,所以如果他想要更好的表单验证,就需要使用正则表达式。
    • 我忘了在我的问题中写这个,但我无法触摸 html 代码,并且目前没有可以连接到的 id。
    • 那么,应该有这样的方式:document.forms[0].inputname。如果&lt;form&gt; 有名字,那么document.formname.inputname 也应该可以工作。
    【解决方案3】:
    function test_email(field_id, field_size) {
    var field_value = $('#'+field_id+'').val();
    error = false;
    var pattern=/^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    if(!pattern.test(field_value)){
        error = true;
        $('#'+field_id+'').attr('class','error_email');
    }
    return error;
    

    }

    【讨论】:

    • 通过这个可以查到邮箱地址是否有效。
    • 看起来像 jQuery,恕我直言不是“纯 Javascript 代码”:)
    【解决方案4】:

    这将检查空字符串以及@符号:

        if(a=="")
            alert("a is empty");
        else if(a.indexOf("@")<0)
            alert("a does not contain @");
    

    【讨论】:

    • 这看起来像是要走的路,但我不知道如何执行。我可以将其放在原始帖子中的 {} 中,还是我还必须添加其他内容?
    【解决方案5】:

    你可以这样做:

    var input = document.getElementById('email');
    
    input.onblur = function() {
      var value = input.value
    
      if (value == "") {
        alert("empty");
      }
    
      if (value.indexOf("@") == -1) {
         alert("No @ symbol");
      }
    
    }
    

    fiddle

    虽然这不是检查电子邮件地址的可靠解决方案,但请参阅以下参考以获得更详细的解决方案:

    http://www.regular-expressions.info/email.html

    http://www.codeproject.com/Tips/492632/Email-Validation-in-JavaScript

    ---- 更新----

    我已经知道没有可用于定位的 IE,因此需要像这样定位输入字段:

    document.getElementsByTagName("input")
    

    使用此代码将选择页面上存在的所有输入字段。这不是我们要寻找的,我们要针对特定​​的输入字段。在没有类或 ID 的情况下执行此操作的唯一方法是按键选择它,如下所示:

    document.getElementsByTagName("input")[0]
    

    如果没有看到您的所有 HTML,我不可能知道要使用的正确键,因此您需要计算页面上输入字段的数量以及输入字段所在的位置。

    1st input filed  = document.getElementsByTagName("input")[0]
    2nd input filed  = document.getElementsByTagName("input")[1]
    3rd input filed  = document.getElementsByTagName("input")[2]
    4th input filed  = document.getElementsByTagName("input")[3]
    etc...
    

    希望这会有所帮助。

    【讨论】:

    • 检查空字符串时使用trim()
    • 我忘了在我的问题中写这个,但我无法触摸 html 代码,并且目前没有可以连接到的 id。
    • 我明白了,有一个解决方案,但是如果 HTML 发生变化,你的 JS 会中断,我会更新我的答案。
    • @CiaranBaselmans - 不幸的是,IE8 及更低版本不支持 trim()
    • @CiaranBaselmans 不幸的是,我不知道以前使用过任何函数,我能找到的任何资源都建议为旧浏览器构建自己的 trim() 函数,所以我只能假设这就是它过去的方式做完了。见这里:stackoverflow.com/questions/2308134/…
    猜你喜欢
    • 2014-12-15
    • 2012-02-20
    • 2020-01-16
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    相关资源
    最近更新 更多