【问题标题】:Error for form validation with website name使用网站名称进行表单验证时出错
【发布时间】:2019-04-12 10:36:37
【问题描述】:

我输入了 type= url 的字段,但它不起作用。 这是这里的html代码。

<div>
        <label for="contact_website">Website:</label>
        <input type="url" id="contact_website" name="website"></input>
        <span class="error">A valid url is required</span>                              </div>

这里是jquery代码。

$('#contact_website').on('input', function() {
                    var input=$(this);
                    if (input.val().substring(0,4)=='www.'){
                        input.val('http://www.'+input.val().substring(4));
                    }
                    var re = /\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&amp;:\/~+#-]*[\w@?^=%&amp;\/~+#-])?/;
                    var is_url=re.test(input.val());
                    if(is_url){
                        input.removeClass("invalid").addClass("valid");
                    }else{
                        input.removeClass("valid").addClass("invalid");
                    }
                });

【问题讨论】:

  • 您应该将代码更改为$('#contact_website').on('change', function() {
  • 这与 jQuery Validate 插件无关。请使用正确的标签。已编辑。谢谢。

标签: jquery forms validation


【解决方案1】:

你可以使用模糊function $('#contact_website').blur(function(){})

$('#contact_website').blur(function(){
                    var input=$(this);
                    if (input.val().substring(0,4)=='www.'){
                        input.val('http://www.'+input.val().substring(4));
                    }
                    var re = /\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&amp;:\/~+#-]*[\w@?^=%&amp;\/~+#-])?/;
                    
                    var is_url=re.test(input.val());
                    
                    if(is_url){
                        input.removeClass("invalid").addClass("valid");
                    }else{
                        input.removeClass("valid").addClass("invalid");
                    }
                });
.invalid{ border:1px solid red;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
        <label for="contact_website">Website:</label>
        <input type="url" id="contact_website" name="website"></input>
        <span class="error">A valid url is required</span>                              </div>

【讨论】:

    【解决方案2】:

    感谢支持,好的我找到了。

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
                 <form id="contact" method="post" action="">
                    <!-- Name -->
                    <div>
                        <label for="contact_name">Name:</label>
                        <input type="text" id="contact_name" name="name"></input>
                        <span class="error">This field is required</span>
                    </div>
                    <!-- Email -->
                    <div>
                        <label for="contact_email">Email:</label>
                        <input type="email" id="contact_email" name="email"></input>
                        <span class="error">A valid email address is required</span>                
                    </div>                      
                    <!--Website -->
                    <div>
                        <label for="contact_website">Website:</label>
                        <input type="url" id="contact_website" name="website"></input>
                        <span class="error">A valid url is required</span>                              
                    </div>                      
                    <!-- Message -->
                    <div>
                        <label for="contact_message">Message:</label>
                        <textarea id="contact_message" name="message"></textarea>
                        <span class="error">This field is required</span>                                               
                    </div>                  
                    <!-- Submit Button -->
                    <div id="contact_submit">               
                        <button type="submit">Submit</button>
                    </div>
                </form>
    

    这是 CSS

    <style>
            #contact label{
                display: inline-block;
                width: 100px;
                text-align: right;
            }
            #contact_submit{
                padding-left: 100px;
            }
            #contact div{
                margin-top: 1em;
            }
            textarea{
                vertical-align: top;
                height: 5em;
            }
    
            .error{
                display: none;
                margin-left: 10px;
            }       
    
            .error_show{
                color: red;
                margin-left: 10px;
            }
    
            input.invalid, textarea.invalid{
                border: 2px solid red;
            }
    
            input.valid, textarea.valid{
                border: 2px solid green;
            }
        </style>
    

    这是 jQuery

    <script>
            $(document).ready(function() {
                    <!--Name must be fill -->
                    $('#contact_name').on('input', function() {
                        var input=$(this);
                        var is_name=input.val();
                        if(is_name){
                            input.removeClass("invalid").addClass("valid");
                        }else{
                            input.removeClass("valid").addClass("invalid");
                        }
                    });
    
                    <!--Email must be a email -->
                    $('#contact_email').on('input', function() {
                        var input=$(this);
                        var re = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
                        var is_email=re.test(input.val());
                        if(is_email){
                            input.removeClass("invalid").addClass("valid");
                        }else{
                            input.removeClass("valid").addClass("invalid");
                        }
                    });
    
    
    
                    <!--Website must be a website -->
                    $('#contact_website').on('input', function() {
                        var input=$(this);
                        if (input.val().substring(0,4)=='www.'){
                            input.val('http://www.'+input.val().substring(4));
                        }
                        var re = /(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&amp;:\/~+#-]*[\w@?^=%&amp;\/~+#-])?/;
                        var is_url=re.test(input.val());
    
                        if(is_url){
                            input.removeClass("invalid").addClass("valid");
                        }else{
                            input.removeClass("valid").addClass("invalid");
                        }
                    });
    
                    <!--Message cant be blank -->
                    $('#contact_message').keyup(function(event) {
                        var input=$(this);
                        var message=$(this).val();
                        console.log(message);
                        if(message){
                            input.removeClass("invalid").addClass("valid");
                        }
                        else{
                            input.removeClass("valid").addClass("invalid");
                        }   
                    });
    
                <!-- After Form Submitted Validation -->
                $("#contact_submit button").click(function(event){
                    var form_data=$("#contact").serializeArray();
                    var error_free=true;
                    for (var input in form_data){
                        var element=$("#contact_"+form_data[input]['name']);
                        var valid=element.hasClass("valid");
                        var error_element=$("span", element.parent());
                        if (!valid){
                            error_element.removeClass("error").addClass("error_show"); 
                            error_free=false;
                        }else{
                            error_element.removeClass("error_show").addClass("error");
                        }
                    }
                    if (!error_free){
                        event.preventDefault(); 
                    }
                    else{
                        alert('No errors: Form will be submitted');
                    }
                });
            });
        </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-13
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      • 1970-01-01
      • 2010-11-13
      相关资源
      最近更新 更多