Почему моя форма не проверяется при нажатии кнопки отправки

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

 <script>

$(document).ready(function() // Run the function after the DOM is ready
{

    var validForm = true; // Set the variable to be true, assume the form is valid

    // Required field. Cannot be empty, spaces, null or undefinded. Contents of the field cannot contain < or > or '. 
    function validateName() 
    {
        var nameInput = $("#custName").val(); // Create a variable that takes in the value of the field
        var nameEx = new RegExp(/<>^[a-zA-Z0-9]*$/); // RegEx of what the field should contain
        var nameTest = nameEx.test(nameInput); // Test the RegEx with the current input

        if(nameInput == "") 
        {
            nameTest = false;
            validForm = false; // Form will be set to false
            var custNameError  = $("#custNameError").html("Please enter a valid name");
        }

        else if (nameInput != "" amp;amp; !nameTest)
        {
            nameTest = false;
            validForm = false; 
            custNameError  = $("#custNameError").html("Please enter a valid name");
        }

        else 
        {
            custNameError = $("#custNameError").html("");
        }
    };

    // Field is optional. Must be numbers only 
    function validatePhone()
    {
        var phoneInput = $("#custPhone").val();
        var phoneEx = new RegExp(/^[0-9]{10}$/); // 10 digit RegEx from 0-9

        if(phoneEx.test(phoneInput))
        {
            $("#custPhoneError").html("Please enter a valid 10 digit phone number");
            validForm = false;
        }

        else 
        {
            validForm = true;
        }
    };

    // Required field. Can have letters, numbers, symbols, and including @ and . email address. 
    function validateEmail()
    {
        var emailInput = $("#custEmail").val;
        var emailEx = new RegExp (/^([w.-] )@([w-] )((.(w){2,3}) )$/);   
        var emailTest = emailEx.text(emailInput);
        var custEmailError = $("#custEmailError").html("");

        if(!emailTest)
        {
            validForm = false;

            if(emailInput == "")
            {
                custEmailError = $("#custEmailError").html("Please enter a valid email address.");
            }

            else 
            {
                if(emailInput != "" amp;amp; !emailTest)
                {
                    custEmailError = $("#custEmailError").html("Please enter a valid email in the following format: test123@email.com");
                    $("#custEmail").val(emailInput);
                    validForm = true;
                }
            }
        }   
    };

    // Required field. Must select one radio button
    function validateProduct()
    {
        var productInput = $("input[type=radio]:checked").val();

        if (productInput == undefined)
        {
            var productTest = false;
            validForm = false; 
            var custProductError = $("#custProductError").html("Please select a product in regards to your complaint");
        }

        else if (!validForm)
        {
            $("input[type=radio]:checked").val(productInput);
        }

        else 
        {
            productTest = true;
            custProductError = $("#custProductError").html("");
            validForm = true;
        }

    };

    // Required field. Must be longer than 5 characters, can contain basic punctuation symbols
    function validateComplaint()
    {
        var complaintInput = $("#custComplaint").val();
        var complaintEx = new RegExp (/^[a-zA-Z0-9,.!?;" ]{5,}$/);
        var complaintTest = complaintEx.test(complaintInput);
        var complainLengthInput = complaintInput.length;

        if (complainLengthInput < 5)
        {
            validForm = false; 
            var custComplaintError = $("#custComplaintError").html("Please have your complaint to be at least 5 characters long");
            $("#custComplaint").val(complaintInput);
        }

        else if (complaintTest)
        {
            custComplaintError = $("#custComplaintError").html("");
        }

        else 
        {
            if (complainLengthInput >= 5 amp;amp; !complaintTest)
            {
                custComplaintError = $("#custComplaintError").html("Please describe your complaint in detail. Using letters and numbers.")
                $("#custComplaint").val(complaintInput);
            }
            else 
            {
                validForm = true;
            }`enter code here`
        }
    };

    function submitForm()
    {
        $("#sendForm").click(function()
        {
            validateName();
            validateEmail();
            validatePhone();
            validateProduct();
            validateComplaint();
        });

        $("#resetForm").click(function()
        {
            $("#custNameError").html("");
            $("#custPhoneError").html("");
            $("#custEmailError").html("");
            $("#custProductError").html("");
            $("#custComplaintError").html("");
        });
    };

});
  

HTML:

 <h2>WDV321 Advanced Javascript </h2>
<h3>Form Validation Project - Complaint Form</h3>
<form id="form1" name="form1" method="post" action="">
  <p>Please enter the following information in order to process your concerns.</p>
  <p> 
    <label for="custName">Name:</label>
        <input type="text" name="custName" id="custName" />
        <span id="custNameError" class="errorMsg"></span>
  </p>
  <p>
    <label for="custPhone">Phone Number: </label>
        <input type="text" name="custPhone" id="custPhone" />
        <span id="custPhoneError" class="errorMsg"></span>
    </p>
    <p>
    <label for="custEmail">Email: </label>
        <input type="text" name="custEmail" id="custEmail" />
        <span id="custEmailError" class="errorMsg"></span>
  </p>
    <p>Please Select Product Group:</p>
    <span class="error" id="custProductError"></span>
  <p>
    <label>
      <input type="radio" name="custProducts" value="books" id="custProducts_0" />
      Books</label>
    <br />
    <label>
      <input type="radio" name="custProducts" value="movies" id="custProducts_1" />
      Movies</label>
    <br />
    <label>
            <input type="radio" name="custProducts" value="electronics" id="custProducts_2" />
            Consumer electronics</label>
    <br />
    <label>
      <input type="radio" name="custProducts" value="computer" id="custProducts_3" />
      Computer</label>
    <br />
  </p>
    <p>Description of problem:  (Limit 200 characters)</p>
    <span class="error" id="custComplaintError"></span>
  <p>
  

 

Я крайне сбит с толку тем, что я делаю неправильно. При нажатии кнопки отправки не похоже, что она запускает какую-либо из моих функций. Консоль в Google Chrome не выдает мне никаких ошибок, и из того, что я просматриваю, не похоже, что я вижу какие-либо синтаксические ошибки. Пожалуйста, сообщите.

Комментарии:

1. Какой у вас HTML?

2. Сначала вы должны предотвратить поведение по умолчанию при нажатии кнопки формы.

3. Только что опубликовал свой html, извините за это.

4. где у вас кнопка отправки и закрытие формы в html?

Ответ №1:

 function submitForm(e) // grab the click event
{
    e.preventDefault();  // prevent default event
    $("#sendForm").click(function()
    {
        validateName();
        validateEmail();
        validatePhone();
        validateProduct();
        validateComplaint();
    });

    $("#resetForm").click(function()
    {
        $("#custNameError").html("");
        $("#custPhoneError").html("");
        $("#custEmailError").html("");
        $("#custProductError").html("");
        $("#custComplaintError").html("");
    });
};
  

Комментарии:

1. Привет, Андре, спасибо за совет. Просто устал от предложенного вами, но все еще не получаю никаких проверок.