2013-09-24 4 views
0

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

Я провел несколько исследований и объединил несколько различных стилей проверки и придумал это;

function validate(form) { 
    var e = form.elements; 

    if(e['reloaded'].value == "yes") { 
     if(!e['Q1-A'].value) { 
      alert('You Must complete the Checklist!'); 
      return false; 
     } 
     if(!e['Q1-B'].value) { 
      alert('You Must complete the Checklist!'); 
      return false; 
     } 
     if(!e['Q1-C'].value) { 
      alert('You Must complete the Checklist!'); 
      return false; 
     } 
     if(!e['Q1-D'].value) { 
      alert('You Must complete the Checklist!'); 
      return false; 
     } 
     if(!e['Q1-E'].value) { 
      alert('You Must complete the Checklist!'); 
      return false; 
     } 
     if(!e['Q1-G'].value) { 
      alert('You Must complete the Checklist!'); 
      return false; 
     } 
     if(!e['Gen-A'].value) { 
      alert('You Must complete the Checklist!'); 
      return false; 
     } 
     if(!e['Gen-B'].value) { 
      alert('You Must complete the Checklist!'); 
      return false; 
     } 
     if(!e['invoice_number'].value) { 
      alert('Invoice Number is REQUIRED!'); 
      return false; 
     } 
     return true; 

    } else if(e['reloaded'].value == "no") { 
     if(!e['Gen-A'].value) { 
      alert('You Must complete the Checklist!'); 
      return false; 
     } 
     if(!e['Gen-B'].value) { 
      alert('You Must complete the Checklist!'); 
      return false; 
     } 
     if(!e['Q2-A'].value) { 
      alert('You Must complete the Checklist!'); 
      return false; 
     } 
     if(!e['invoice_number'].value) { 
      alert('Invoice Number is REQUIRED!'); 
      return false; 
     } 
     return true; 

    } else if(!e['reloaded'].value) { 
     alert('You must indicate if you Reloaded the OS!'); 
     return false; 
    } 
} 

На этом этапе он просто возвращается «Вы должны указать, перезагрузили ли вы ОС!» даже если он выбран.

Задача состоит в том, чтобы выбрать вариант из выбора радиобарабана, после чего он отобразит некоторые флажки, и все флажки должны быть проверены перед отправкой формы. Очевидно, что некоторые флажки показывают только, если выбран конкретный параметр, и поэтому некоторые из них должны быть исключены из необходимости. Существует также дополнительное поле, которое необходимо заполнить (invoice_number), которое всегда имело проверку на нем и всегда работало.

радио Кнопки:

<input name="reloaded" id="reloaded" type="radio" value="yes" onClick="Q1(this.value);" /> Yes</label> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <label><input name="reloaded" id="reloaded" type="radio" value="no" onClick="Q1(this.value);" /> 

Флажки все же, за исключением идентификаторов/имен

<input name="Q1-A" id="Q1-A" type="checkbox" value="yes" /> 

Обязательный Text Box:

<input class="field size5" type="text" name="invoice_number" id="invoice_number" placeholder="Required! - 'RA' for Warranty Jobs" /> 

Я уверен, что у меня есть из-за моего недостатка знаний, но я просто не могу придумать, где я ошибся.

(Представление происходит через onsubmit="return validate(this);")

+0

показать полный HTML – sunysen

+0

Я обновляется, чтобы показать вход HTML, функция Q1 просто показывает и скрывает дивы с флажками в них. – Tarquin

+0

Можете ли вы использовать jQuery? –

ответ

0

Следующий код был мой конечный результат, и это работает;

   function validate(form) { 
       var e = form.elements; 

       if(document.getElementById('RL-Y').checked) { 
        if(!e['Q1-A'].checked || !e['Q1-B'].checked || !e['Q1-C'].checked || !e['Q1-D'].checked || !e['Q1-E'].checked || !e['Q1-G'].checked || !e['Gen-A'].checked || !e['Gen-B'].checked) { 
        alert('You Must complete the Checklist!'); 
        return false; 
        } 
        if(!e['invoice_number'].value) { 
        alert('Invoice Number is REQUIRED!'); 
        return false; 
        } 
        return true; 

       } else if(document.getElementById('RL-N').checked) { 
        if(!e['Gen-A'].checked || !e['Gen-B'].checked || !e['Q2-A'].checked) { 
        alert('You Must complete the Checklist!'); 
        return false; 
        } 
        if(!e['invoice_number'].value) { 
        alert('Invoice Number is REQUIRED!'); 
        return false; 
        } 
        return true; 

       } else { 
       alert('You must indicate if you Reloaded the OS!'); 
       return false; 
       } 
      } 
Смежные вопросы