验证表单不起作用 - 表单和验证

Posted

技术标签:

【中文标题】验证表单不起作用 - 表单和验证【英文标题】:Validate Form not working - form and validation 【发布时间】:2021-12-01 07:38:05 【问题描述】:

$(function()
    $("#submit").click(function()
        var first_name = $("#first_name").val();
        var last_name = $("#last_name").val();
        var phone = $("#phone").val();
        var email = $("#email").val();
        var ans = true;
        var atpos = email.indexOf("@");
        var dotpos = email.lastIndexOf(".");
        if(first_name === "")
            window.alert("لا يمكنك ترك خانةالاسم فارغة");
            $("#first_name").addClass("WrongInp");
            ans = false;
        else
            $("#first_name").removeClass("WrongInp");
        
        if(last_name === "")
            window.alert("لا يمكنك ترك خانةاسم العائلة فارغة");
            $("#last_name").addClass("WrongInp");
            ans = false;
        else
            $("#last_name").removeClass("WrongInp");
        
        if(phone.value === "")
            window.alert("لا يمكنك ترك خانةالهاتف فارغة");
            $("#phone").addClass("WrongInp");
            ans = false;
        else
            $("#phone").removeClass("WrongInp");
        
        if(phone.length < 9 || phone.length > 14)
            window.alert("ادخل رقم هاتف صحيح");
            $("#phone").addClass("WrongInp");
            ans = false;
        else
            $("#phone").removeClass("WrongInp");
        
        if (email === '') 
           alert('الرجاء ادخال البريد الالكتروني');
           return false;
            
        if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= email.length) 
           alert("البريد الالكتروني غير صحيح");
           return false;
            
        if(ans === true)   
            var url = 'Cant Reveal';
            var form = new FormData();
            form.append("first_name", $('#first_name').val());
            form.append("last_name", $('#last_name').val());
            form.append("phone", $('#phone').val());
            form.append("email", $('#email').val());
            form.append("status", "new");
        
            var settings = 
              "url": "cant Reveal",
              "method": "POST",
              "timeout": 0,
              "headers": 
                "Authorization": "Cant Reveal"
              ,
              "processData": false,
              "mimeType": "multipart/form-data",
              "contentType": false,
              "data": form
            ;
        
            $.ajax(settings).done(function (response) 
              window.location.href = "www.google.com";
            );

        
    
        return false;
    );
);
<form id="myForm">
              <input name="first_name" id="first_name" class="input" type="text" placeholder="الاسم الكامل" required />
              <input name="phone" id="phone" minlength="8" maxlength="15" class="input" type="text" placeholder="الجوال" required />
              <input name="email" id="email" pattern="[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]2," class="input" type="text" placeholder="البريد الالكتروني" required />
            <button type="text" class="submit">submit</button>
            <input type="hidden" name="last_name" id="last_name" value="LN">
        </form>
我的代码有什么问题我在 javascript 部分更改了一些内容,但无法让它再次工作!

我认为我在 javascript 中进行了更改, 首先我验证表格,然后用 ans 提交 ans 必须为真 如果其中一个字段为空或电话和电子邮件与我的验证不匹配,如果变为 false 并且不继续

在 javascript 部分中提出的任何建议 或者我可以删除这个部分并写另一个更好的......

【问题讨论】:

【参考方案1】:

click 处理程序不起作用,因为您将其绑定到 ID 为 submit - $("#submit")html 元素。

在提供的 HTML 中,您使用的是 submit 类,而不是 id。

<button type="text" class="submit">submit</button>

要使处理程序工作更改此行:

$("#submit").click(function()

到这个

$(".submit").click(function()

另一种选择是在 HTML 中使用 id 而不是 class

<button type="text" id="submit">submit</button>

在 javascript 部分中提出的任何建议,或者我可以删除此部分并编写另一个更好的部分......

如果你是初学者,完全没问题。如果你想让它更简洁(因为你使用的是 jQuery),我建议你看看这个插件,比如 - jquery-validation

【讨论】:

太棒了,谢谢【参考方案2】:

试一试。

$(document).ready(function()
    $("#submit").click(function()
        var first_name = $("#first_name").val();
        var last_name = $("#last_name").val();
        var phone = $("#phone").val();
        var email = $("#email").val();
        var ans = true;
        var atpos = email.indexOf("@");
        var dotpos = email.lastIndexOf(".");
        if(first_name === "")
            window.alert("لا يمكنك ترك خانةالاسم فارغة");
            $("#first_name").addClass("WrongInp");
            ans = false;
        else
            $("#first_name").removeClass("WrongInp");
        
        if(last_name === "")
            window.alert("لا يمكنك ترك خانةاسم العائلة فارغة");
            $("#last_name").addClass("WrongInp");
            ans = false;
        else
            $("#last_name").removeClass("WrongInp");
        
        if(phone.value === "")
            window.alert("لا يمكنك ترك خانةالهاتف فارغة");
            $("#phone").addClass("WrongInp");
            ans = false;
        else
            $("#phone").removeClass("WrongInp");
        
        if(phone.length < 9 || phone.length > 14)
            window.alert("ادخل رقم هاتف صحيح");
            $("#phone").addClass("WrongInp");
            ans = false;
        else
            $("#phone").removeClass("WrongInp");
        
        if (email === '') 
           alert('الرجاء ادخال البريد الالكتروني');
           return false;
            
        if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= email.length) 
           alert("البريد الالكتروني غير صحيح");
           return false;
            
        if(ans === true)   
            var url = 'Cant Reveal';
            var form = new FormData();
            form.append("first_name", $('#first_name').val());
            form.append("last_name", $('#last_name').val());
            form.append("phone", $('#phone').val());
            form.append("email", $('#email').val());
            form.append("status", "new");
        
            var settings = 
              "url": "cant Reveal",
              "method": "POST",
              "timeout": 0,
              "headers": 
                "Authorization": "Cant Reveal"
              ,
              "processData": false,
              "mimeType": "multipart/form-data",
              "contentType": false,
              "data": form
            ;
        
            $.ajax(settings).done(function (response) 
              window.location.href = "www.google.com";
            );

        
    
        return false;
    );
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="myForm">
              <input name="first_name" id="first_name" class="input" type="text" placeholder="الاسم الكامل" required />
              <input name="phone" id="phone" minlength="8" maxlength="15" class="input" type="text" placeholder="الجوال" required />
              <input name="email" id="email" pattern="[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]2," class="input" type="text" placeholder="البريد الالكتروني" required />
            <button type="text" class="submit">submit</button>
            <input type="hidden" name="last_name" id="last_name" value="LN">
        </form>

【讨论】:

以上是关于验证表单不起作用 - 表单和验证的主要内容,如果未能解决你的问题,请参考以下文章

jquery验证表单不起作用[关闭]

表单验证在引导程序中不起作用

自定义表单验证注释不起作用

Jquery表单验证不起作用

基于 JSF 表单的身份验证 + 托管 Bean 登录不起作用

jquery验证动态表单输入的插件不起作用