使用 jQuery 的表单验证中的问题,适用于另一个表单

Posted

技术标签:

【中文标题】使用 jQuery 的表单验证中的问题,适用于另一个表单【英文标题】:Problem in a form validation using jQuery, work for another form 【发布时间】:2021-02-23 12:57:29 【问题描述】:

我需要帮助,因为我使用 jQuery 来验证 2 个表单,对于第一个表单,这个 jQuery 运行良好,但对于第二个表单,它不起作用,因为它一直提交空白空间。这是我的 jQuery 代码

(function ($) 
"use strict";


/*==================================================================
[ Validate ]*/
var input = $('.validate-input .input100');
// var input2 = $('.validate-angkatan .input100');

$('.validate-form').on('submit',function()
    var check = true;

    for(var i=0; i<input.length; i++) 
        if(validate(input[i]) == false)
            showValidate(input[i]);
            check=false;
        
    
    

    return check;
);



$('.validate-form .input100').each(function()
    $(this).focus(function()
       hideValidate(this);
    );
);

function validate (input) 
    if($(input).attr('type') == 'email' || $(input).attr('name') == 'email') 
        if($(input).val().trim().match(/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]1,3\.[0-9]1,3\.[0-9]1,3\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]1,5|[0-9]1,3)(\]?)$/) == null) 
            return false;
        
    
    else 
        if($(input).val().trim() == '')
            return false;
        
    



function showValidate(input) 
    var thisAlert = $(input).parent();

    $(thisAlert).addClass('alert-validate');


function hideValidate(input) 
    var thisAlert = $(input).parent();

    $(thisAlert).removeClass('alert-validate');

)(jQuery);

这是第一个与上述验证完美配合的表单

<form class="login100-form validate-form ml-5" action="/DatabaseAlumni/login/auth" method="post">
                <span class="login100-form-title">
                    Login Alumni
                </span>

                <div class="wrap-input100 validate-input" data-validate="Valid email is required: ex@abc.xyz">
                    <input class="input100" type="text" name="email" placeholder="Email">
                    <span class="focus-input100"></span>
                    <span class="symbol-input100">
                        <i class="fa fa-envelope" aria-hidden="true"></i>
                    </span>
                </div>

                <div class="wrap-input100 validate-input" data-validate="Password is required">
                    <input class="input100" type="password" name="pass" placeholder="Password">
                    <span class="focus-input100"></span>
                    <span class="symbol-input100">
                        <i class="fa fa-lock" aria-hidden="true"></i>
                    </span>
                </div>

                <div class="container-login100-form-btn">
                    <button class="login100-form-btn">
                        Login
                    </button>
                </div>

                <div class="text-center p-t-12">
                    <span class="txt1">
                        Lupa
                    </span>
                    <a class="txt2" href="#">
                        Password?
                    </a>
                </div>

                <div class="text-center p-t-136">
                    <a class="txt2" href="/DatabaseAlumni/register">
                        Buat Akun
                        <i class="fa fa-long-arrow-right m-l-5" aria-hidden="true"></i>
                    </a>
                </div>
            </form>

这是第二个表单,一直在提交空格

<form class="login100-form validate-form ml-5" action="/DatabaseAlumni/register/createacc" method="post">
                <span class="login100-form-title">
                    Daftar Akun
                </span>
                <div class="row">
                    <div class="col-md-6">
                        <div class="wrap-input100 validate-input" data-validate="Isi NPM">
                            <input class="input100" type="text" name="npm" placeholder="NPM">
                            <span class="focus-input100"></span>
                            <span class="symbol-input100">
                                <i class="fa fa-address-card" aria-hidden="true"></i>
                            </span>
                        </div>

                        <div class="wrap-input100 validate-input" data-validate="Isi dengan nama lengkap">
                            <input class="input100" type="text" name="nama" placeholder="Nama Lengkap">
                            <span class="focus-input100"></span>
                            <span class="symbol-input100">
                                <i class="fa fa-user" aria-hidden="true"></i>
                            </span>
                        </div>
                        <div class="wrap-input100 validate-input" data-validate="Isi dengan angkatan">
                            <?php $a = date("Y"); ?>
                            <input class="input100" type="number" name="angkatan" placeholder="Angkatan" min="1960" max=<?= $a - 4; ?>>
                            <span class="focus-input100"></span>
                            <span class="symbol-input100">
                                <i class="fa fa-user" aria-hidden="true"></i>
                            </span>
                        </div>

                        <!-- <div class="wrap-input100 validate-angkatan" data-validate="Isi dengan angkatan">
                            <input class="input100" type="text" name="nama" id="angkatan" placeholder="Angkatan" autocomplete="off">
                            <span class="focus-input100"></span>
                            <span class="symbol-input100">
                                <i class="fa fa-users" aria-hidden="true"></i>
                            </span>

                        </div> -->


                        <div class="wrap-input100">
                            <div class="row mt-4 ml-4">
                                <div class="col-md-4">
                                    <input type="radio" id="male" name="gender" value="Laki-laki">
                                    <label class="ml-1" for="male">Laki-laki</label><br>
                                </div>
                                <div class="col-md-5">
                                    <input type="radio" id="female" name="gender" value="Perempuan">
                                    <label class="ml-1" for="female">Perempuan</label><br>
                                </div>
                            </div>
                        </div>



                    </div>

                    <div class="col-md-6">



                        <div class="wrap-input100 validate-input" data-validate="Masukkan Email dengan benar">
                            <input class="input100" type="email" name="email" placeholder="Email">
                            <span class="focus-input100"></span>
                            <span class="symbol-input100">
                                <i class="fa fa-envelope" aria-hidden="true"></i>
                            </span>
                        </div>

                        <div class="wrap-input100 validate-input" data-validate="Password Wajib Diisi">
                            <input id="password" class="input100" type="password" name="pw" placeholder="Password" onkeyup="check();">
                            <span class="focus-input100"></span>
                            <span class="symbol-input100">
                                <i class="fa fa-lock" aria-hidden="true"></i>
                            </span>
                        </div>
                        <div class="wrap-input100 validate-input" data-validate="Masukkan kembali Password">
                            <input id="confirm_password" class="input100" type="password" name="pw2" placeholder="Konfirmasi Password" onkeyup="check();">
                            <label><span id="message"></span></label>

                        </div>
                    </div>
                </div>

                <div class="container-login100-form-btn">
                    <button type="submit" class="login100-form-btn">
                        Daftar
                    </button>
                </div>

                <div class="text-center p-t-136">
                    <a class="txt2" href="/DatabaseAlumni/login">
                        Sudah memiliki akun? Masuk
                        <i class="fa fa-long-arrow-right m-l-5" aria-hidden="true"></i>
                    </a>
                </div>
            </form>

我尝试在浏览器的调试功能中暂停断点并设置断点

check=false;

在 jQuery.当我尝试使用空输入提交第一个表单时,我暂停了。但是对于第二种形式,我什么也没得到。我不明白,因为我对两种表单都使用了相同的结构,包括类和 div。

【问题讨论】:

您的第二个表单是在页面加载后动态创建的吗(例如通过 ajax 调用或在模式对话框中)?你可以试试:$(document).on('submit', '.validate-form', function() 两个表单是否在同一个页面上?还是在不同的页面上?如果在不同的页面上仔细检查你是否包含了 .js。是否有任何控制台错误? 对电子邮件和年份使用适当的输入类型,并使用所需的属性。好教程:web.dev/sign-in-form-best-practices - 密码确认也很痛苦,让浏览器自动提示一个强密码 【参考方案1】:

案例已结束,我检查了控制台日志,发现我的 jquery 文件包含错误

【讨论】:

以上是关于使用 jQuery 的表单验证中的问题,适用于另一个表单的主要内容,如果未能解决你的问题,请参考以下文章

表单输入验证,仅允许存在于另一个表中的值 - Access

为啥我的 jquery 表单验证不适用于 IE7?它适用于 FF、Opera、Safari 等

datagridviewcombobox columns 依赖于另一列

当单个页面上存在 2 个表单时,如何使用 jQuery 表单验证插件验证 reCaptcha?

通过 jQuery 验证表单中的一个元素

表单验证 - jQuery 验证是不是足够以及如何巧妙地验证 PHP 中的数据?