Javascript все поля не проверяются

#javascript #html

#javascript #HTML

Вопрос:

Ниже приведен мой код HTML, в нем он проверяет только первые два поля, т. Е. Имя ребенка и номер мобильного телефона, только путем появления предупреждающего сообщения в окне, когда я нажимаю на кнопку отправки, но не знаю, почему он не проверяет поля ниже, и выдает сообщение об ошибке при отправке записи в базу данных, потому что изображение и т.д. поля равны нулю. Я много пробовал, но не смог найти ошибку.

 <script> 
function BabyContest()                                    
{ 
    var baby_name = document.forms["RegForm"]["baby_name"];               
    var mob_no = document.forms["RegForm"]["mob_no"];    
    var guardian_email = document.forms["RegForm"]["guardian_email"];  
    var dob =  document.forms["RegForm"]["dob"];  
    var lines_for_baby = document.forms["RegForm"]["lines_for_baby"];  
    var image_file =  document.forms["RegForm"]["image_file"];  
     
   
    if (baby_name.value == "")                                  
    { 
        window.alert("Please enter your baby's name."); 
        baby_name.focus(); 
        return false; 
    } 
   
 
    if (mob_no.value.match(/^(?([6-9]{1}))?([0-9]{9})$/))
        {
      return true;
        }
      else
        {
        alert("Please enter a Valid 10 digit Mobile Number");
        mob_no.focus();
        return false;
        }
           
    if (guardian_email.value == "")                                   
    { 
        window.alert("Please enter a email address."); 
        guardian_email.focus(); 
        return false; 
        }
        else
        {
          if (guardian_email.value != "")
          {
            if (guardian_email.value.match(/^[a-zA-Z0-9.!#$%amp;'* /=?^_`{|}~-] @[a-zA-Z0-9-] (?:.[a-zA-Z0-9-] )*$/))
            {
          return true;
            }
          else
            {
            alert("Please enter a Valid Email Address");
            guardian_email.focus()
            return false;
            }
          }
        }

   
    if (dob.value == "")                           
    { 
        window.alert("Please enter baby's date of birth."); 
        dob.focus(); 
        return false; 
    } 
   
    if (lines_for_baby.value == "")                        
    { 
        window.alert("Please write some lines for baby"); 
        lines_for_baby.focus(); 
        return false; 
    } 

    if (image_file.value == "")                        
    { 
        window.alert("Please input Image file"); 
        image_file.focus(); 
        return false; 
    } 
   
    return true; 
}
</script> 
  
 <form action="/upload" method="post" enctype="multipart/form-data" name="RegForm" onsubmit="return BabyContest()">
      <p class="title-font sm:text-xl text-xl mb-4 font-small text-blue-600"><b>Enter Baby's Name</b></p>
      <div class="flex w-full md:justify-start justify-center">
        <input class="bg-gray-100 rounded mr-4 border border-gray-400 focus:outline-none focus:border-indigo-500 text-base px-4 lg:w-full xl:w-1/2 w-2/4" placeholder="Enter Contestant's Name" type="text" name="baby_name" >        
      </div>
      <p class="title-font sm:text-xl text-xl mb-4 font-small text-blue-600"><b> Guardian's Mobile No:</b></p>
      <div class="flex w-full md:justify-start justify-center">
        <input class="bg-gray-100 rounded mr-4 border border-gray-400 focus:outline-none focus:border-indigo-500 text-base px-4 lg:w-full xl:w-1/2 w-2/4" placeholder="Enter 10 digit Mobile No." type="tel" name="mob_no" >        
      </div>
      <p class="title-font sm:text-xl text-xl mb-4 font-small text-blue-600"><b>Enter Guardian' email</b></p>
      <div class="flex w-full md:justify-start justify-center">
        <input class="bg-gray-100 rounded mr-4 border border-gray-400 focus:outline-none focus:border-indigo-500 text-base px-4 lg:w-full xl:w-1/2 w-2/4" placeholder="Enter valid Email address" type="email" name="guardian_email" >        
      </div>
      <p class="text-sm mt-2 text-gray-500 mb-8 w-full">Please enter a valid email address as further communicaiton will be done this email</p>
      <p class="title-font sm:text-xl text-xl mb-4 font-small text-blue-600"><b>Date Of Birth Of Your Baby</b></p>
      <div class="flex w-full md:justify-start justify-center">
        <input class="bg-gray-100 rounded mr-4 border border-gray-400 focus:outline-none focus:border-indigo-500 text-base px-4 lg:w-full xl:w-1/2 w-2/4" placeholder="mm/dd/yyyy" type="date" name="dob" >  
     
      </div>
      <p class="title-font sm:text-xl text-xl mb-4 font-small text-blue-600"><b>Some Pleasurable Lines For Baby</b></p>
      <div class="flex w-full md:justify-start justify-center">
        <textarea class="bg-gray-100 rounded mr-4 border border-gray-400 h-48 focus:outline-none focus:border-indigo-500 text-base px-4 lg:w-full xl:w-1/2 w-2/4" placeholder="Write some Pleasurable Lines For Baby" type="text" name="lines_for_baby" ></textarea>     
      </div>
      
      <p class="title-font sm:text-xl text-xl mb-4 font-small text-blue-600"><b>Please Upload Image Of Baby</b></p>
      <div class = "row">

            <input type="file" name="image_file"  >
            <button type="submit" class="inline-flex text-white bg-indigo-500 border-0 py-2 px-6 focus:outline-none hover:bg-indigo-600 rounded text-lg" >Submit </button>
          </div> 
</form>

  

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

1. Если на ваш вопрос был дан удовлетворительный ответ, пожалуйста, рассмотрите возможность выбора ответа для отметки, чтобы завершить свой вопрос.

Ответ №1:

Проверка номера мобильного телефона return true заключена в if инструкции, которая приводит к короткому замыканию остальной части функции. У вас должно быть только одно return true в конце функции после того, как каждая проверка прошла успешно, т. Е. Не была применена return false .

Например, вы могли бы рассмотреть возможность изменения строки проверки номера мобильного телефона на

if (!mob_no.value.match(/^(?([6-9]{1}))?([0-9]{9})$/))

и полностью удалите return true раздел этого if заявления.

Другой способ добиться этого в целом — иметь переменную var ret = true и устанавливать эту переменную при каждой проверке соответствующим образом, а затем return ret в конце. Этот подход будет иметь побочный эффект, заключающийся в том, что конечный пользователь (возможно) получит несколько предупреждений, поэтому механизм return false при первом сбое более подходит для этого приложения.