【问题标题】:validation of input text field in html using javascript使用javascript验证html中的输入文本字段
【发布时间】:2023-03-17 23:25:01
【问题描述】:
<script type='text/javascript'>   
function required()  
{
    var empt = document.forms["form1"]["Name"].value; 
    if (empt == "")  
    {  
        alert("Please input a Value");  
        return false;  
    }  
}  
</script> 

<form name="form1" method="" action="">
<input type="text" name="name" value="Name"/><br />
<input type="text" name="address line1" value="Address Line 1"/><br />

我有多个输入文本字段,每个字段都有默认值。在我提交表格之前,我必须验证是否所有字段都已填写。到目前为止,我得到了 javascript 来检查 null,因为不同的文本框有不同的默认值。如何编写 javascript 来验证用户是否输入了数据?我的意思是,脚本必须识别输入数据不是默认值和空值。

【问题讨论】:

  • 您可以使用 HTML5 验证。这非常简单,您也可以自定义您的消息。现在不需要任何 javascript 或 jquery 方法进行客户端验证。你可以检查这个link

标签: javascript html validation form-submit


【解决方案1】:

如果您不使用 jQuery,那么我将简单地编写一个验证方法,您可以在提交表单时触发该方法。该方法可以验证文本字段以确保它们不是空的或默认值。该方法将返回一个 bool 值,如果它为 false,您可以触发警报并分配类以突出显示未通过验证的字段。

HTML:

<form name="form1" method="" action="" onsubmit="return validateForm(this)">
<input type="text" name="name" value="Name"/><br />
<input type="text" name="addressLine01" value="Address Line 1"/><br />
<input type="submit"/>
</form>

JavaScript:

function validateForm(form) {

    var nameField = form.name;
    var addressLine01 = form.addressLine01;

    if (isNotEmpty(nameField)) {
        if(isNotEmpty(addressLine01)) {
            return true;
        {
    {
    return false;
}

function isNotEmpty(field) {

    var fieldData = field.value;

    if (fieldData.length == 0 || fieldData == "" || fieldData == fieldData) {

        field.className = "FieldError"; //Classs to highlight error
        alert("Please correct the errors in order to continue.");
        return false;
    } else {

        field.className = "FieldOk"; //Resets field back to default
        return true; //Submits form
    }
}

validateForm 方法分配您要验证的元素,然后在这种情况下调用 isNotEmpty 方法来验证该字段是否为空或未更改默认值。它不断调用 inNotEmpty 方法,直到它返回一个值 true 或者如果该字段的条件失败,它将返回 false。

试一试,如果有帮助或有任何疑问,请告诉我。当然,您可以编写额外的自定义方法来仅验证数字、电子邮件地址、有效 URL 等。

如果您使用 jQuery,我会考虑试用 jQuery Validation 插件。我在最近的几个项目中一直在使用它,它非常好。有机会就去看看。 http://docs.jquery.com/Plugins/Validation

【讨论】:

  • 感谢您的回复,您的方法很简单,但不知何故,即使在填写所有文本框后我也无法获得“FieldOk”,它显示“请更正错误以便继续”。
  • 嘿,很抱歉,过了一段时间才回复您...我没有在示例中包含 'FieldOk''FieldError' CSS 类。您可以创建一个集合,然后将文本和字段颜色的值设置为在出现错误时变为红色,然后在字段验证时将其设置回默认值。
  • 我刚刚注意到我收到错误警报的原因,将 fieldData 与 fieldData 进行比较,这显然总是正确的,而不是我需要一个函数来验证输入的字段不是文本输入中的默认值.
  • 哦,我的错...好吧,如果您希望它在用户离开默认字段值并单击提交时抛出错误。如果默认值为广告,则始终为“名称”。尝试更改:fieldData == fieldDatafieldData == "Name"
  • 是的,我做了这些更改,这需要为每个字段提供单独的功能,感谢您提供让我继续前进的基本理解。
【解决方案2】:
<form name="myForm" id="myForm" method="post" onsubmit="return validateForm();">
    First Name: <input type="text" id="name" /> <br />
    <span id="nameErrMsg" class="error"></span> <br />
    <!-- ... all your other stuff ... -->
</form>
  <p>
    1.word should be atleast 5 letter<br>
    2.No space should be encountered<br>
    3.No numbers and special characters allowed<br>
    4.letters can be repeated upto 3(eg: aa is allowed aaa is not allowed)
  </p>
  <button id="validateTestButton" value="Validate now" onclick="validateForm();">Validate now</button>


validateForm = function () {
    return checkName();
}

function checkName() {
    var x = document.myForm;
    var input = x.name.value;
    var errMsgHolder = document.getElementById('nameErrMsg');
    if (input.length < 5) {
        errMsgHolder.innerHTML =
            'Please enter a name with at least 5 letters';
        return false;
    } else if (!(/^\S{3,}$/.test(input))) {
        errMsgHolder.innerHTML =
            'Name cannot contain whitespace';
        return false;
    }else if(!(/^[a-zA-Z]+$/.test(input)))
    {
        errMsgHolder.innerHTML=
                'Only alphabets allowed'
    }
    else if(!(/^(?:(\w)(?!\1\1))+$/.test(input)))
    {
        errMsgHolder.innerHTML=
                'per 3 alphabets allowed'
    }
    else {
        errMsgHolder.innerHTML = '';
        return undefined;
    }       

}

.error {
color: #E00000;
 }

【讨论】:

    【解决方案3】:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
            <title>Validation</title>
            <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
            <script type="text/javascript">
                var tags = document.getElementsByTagName("input");
                var radiotags = document.getElementsByName("gender");
                var compareValidator = ['compare'];
                var formtag = document.getElementsByTagName("form");
                function validation(){
                    for(var i=0;i<tags.length;i++){
                        var tagid = tags[i].id;
                        var tagval = tags[i].value;
                        var tagtit = tags[i].title;
                        var tagclass = tags[i].className;
                        //Validation for Textbox Start
                        if(tags[i].type == "text"){
                            if(tagval == "" || tagval == null){
                                var lbl = $(tags[i]).prev().text();
                                lbl = lbl.replace(/ : /g,'')
                                //alert("Please Enter "+lbl);
                                $(".span"+tagid).remove();
                                $("#"+tagid).after("<span style='color:red;' class='span"+tagid+"'>Please Enter "+lbl+"</span>");
                                $("#"+tagid).focus();
                                //return false;
                            }
                            else if(tagval != "" || tagval != null){
                                $(".span"+tagid).remove();
                            }
                            //Validation for compare text in two text boxes Start
                            //put two tags with same class name and put class name in compareValidator.
                            for(var j=0;j<compareValidator.length;j++){
                                if((tagval != "") && (tagclass.indexOf(compareValidator[j]) != -1)){
                                    if(($('.'+compareValidator[j]).first().val()) != ($('.'+compareValidator[j]).last().val())){
                                        $("."+compareValidator[j]+":last").after("<span style='color:red;' class='span"+tagid+"'>Invalid Text</span>");
                                        $("span").prev("span").remove();
                                        $("."+compareValidator[j]+":last").focus();
                                        //return false;
                                    }
                                }
                            }
                            //Validation for compare text in two text boxes End
                            //Validation for Email Start
                            if((tagval != "") && (tagclass.indexOf('email') != -1)){
                            //enter class = email where you want to use email validator
                                var reg = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
                                if (reg.test(tagval)){
                                    $(".span"+tagid).remove();
                                    return true; 
                                }
                                else{
                                    $(".span"+tagid).remove();
                                    $("#"+tagid).after("<span style='color:red;' class='span"+tagid+"'>Email is Invalid</span>");
                                    $("#"+tagid).focus();
                                    return false;
                                }
                            }
                            //Validation for Email End
                        }
                        //Validation for Textbox End
                        //Validation for Radio Start
                        else if(tags[i].type == "radio"){
                        //enter class = gender where you want to use gender validator
                            if((radiotags[0].checked == false) && (radiotags[1].checked == false)){
                                $(".span"+tagid).remove();
                                //$("#"+tagid").after("<span style='color:red;' class='span"+tagid+"'>Please Select Your Gender </span>");
                                $(".gender:last").next().after("<span style='color:red;' class='span"+tagid+"'> Please Select Your Gender</span>");
                                $("#"+tagid).focus();
                                i += 1;
                            }
                            else{
                                $(".span"+tagid).remove();
                            }
                        }
                        //Validation for Radio End              
                        else{
    
                        }
                    }
                    //return false;
                }
                function Validate(){
                   if(!validation()){
                        return false;
                    }
                    return true;
                }
                function onloadevents(){
                    tags[tags.length -1].onclick = function(){
                        //return Validate();
                    }
                    for(var j=0;j<formtag.length;j++){
                        formtag[j].onsubmit = function(){
                            return Validate();
                        }
                    }
                    for(var i=0;i<tags.length;i++){
                        var tagid = tags[i].id;
                        var tagval = tags[i].value;
                        var tagtit = tags[i].title;
                        var tagclass = tags[i].className;
                        if((tags[i].type == "text") && (tagclass.indexOf('numeric') != -1)){
                            //enter class = numeric where you want to use numeric validator
                            document.getElementById(tagid).onkeypress = function(){
                                numeric(event);
                            }
                        }
                    }
                }
                function numeric(event){
                    var KeyBoardCode = (event.which) ? event.which : event.keyCode; 
                    if (KeyBoardCode > 31 && (KeyBoardCode < 48 || KeyBoardCode > 57)){
                        event.preventDefault();
                        $(".spannum").remove();
                        //$(".numeric").after("<span class='spannum'>Numeric Keys Please</span>");
                        //$(".numeric").focus();
                        return false;
                    }
                        $(".spannum").remove();
                        return true;
                }
                if (document.addEventListener) {
                  document.addEventListener("DOMContentLoaded", onloadevents, false);
                }
                //window.onload = onloadevents;
            </script>
        </head>
        <body>
            <form method="post">
                <label for="fname">Test 1 : </label><input type="text" title="Test 1" id="fname" class="form1"><br>
                <label for="fname1">Test 2 : </label><input type="text" title="Test 2" id="fname1" class="form1 compare"><br>
                <label for="fname2">Test 3 : </label><input type="text" title="Test 3" id="fname2" class="form1 compare"><br>
                <label for="gender">Gender : </label>
                <input type="radio" title="Male" id="fname3" class="gender" name="gender" value="Male"><label for="gender">Male</label>
                <input type="radio" title="Female" id="fname4" class="gender" name="gender" value="Female"><label for="gender">Female</label><br>
                <label for="fname5">Mobile : </label><input type="text" title="Mobile" id="fname5" class="numeric"><br>
                <label for="fname6">Email : </label><input type="text" title="Email" id="fname6" class="email"><br>
                <input type="submit" id="sub" value="Submit">
            </form>
        </body>
    </html>
    

    【讨论】:

      【解决方案4】:
      function hasValue( val ) { // Return true if text input is valid/ not-empty
          return val.replace(/\s+/, '').length; // boolean
      }
      

      对于多个元素,您可以在输入元素中传递它们的值,将它们的值循环到该函数参数中。

      如果用户插入一个或多个空格,由于正则表达式s+,该函数将返回 false。

      【讨论】:

        【解决方案5】:
        <pre><form name="myform" action="saveNew" method="post" enctype="multipart/form-data">
            <input type="text"   id="name"   name="name" /> 
        <input type="submit"/>
        </form></pre>
        
        <script language="JavaScript" type="text/javascript">
         var frmvalidator  = new Validator("myform");
            frmvalidator.EnableFocusOnError(false); 
            frmvalidator.EnableMsgsTogether(); 
            frmvalidator.addValidation("name","req","Plese Enter Name"); 
        
        </script>
        
        
        
        
        before using above code you have to add the gen_validatorv31.js js file
        

        【讨论】:

          【解决方案6】:

          对于灵活性和其他您可能想要验证的地方。您可以使用以下功能。

          `function validateOnlyTextField(element) {
              var str = element.value;
              if(!(/^[a-zA-Z, ]+$/.test(str))){
                  // console.log('String contain number characters');
                  str = str.substr(0,  str.length -1);
                  element.value = str;
              }
          }`
          

          然后在您的 html 部分使用以下事件。

          &lt;input type="text" id="names" onkeyup="validateOnlyTextField(this)" /&gt;

          您可以随时重复使用该功能。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-07
            相关资源
            最近更新 更多