2013-09-24 80 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);" /> 

复选框被除的ID /名称都一样

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

需要文本框中:

<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函数只是显示并隐藏了div中的复选框。 – 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; 
       } 
      }