在最后一次选择中,验证不起作用

时间:2018-12-16 12:34:01

标签: javascript forms validation

我正在尝试验证我的出生日期。

基本上,当输入第一个和第二个Dob时,它可以正常工作,但是在最后一个选择年份中,它验证不起作用并返回true。

代码如下:

conda install -c conda-forge xgboost
    function dobvalidation()
{
    var dob1=document.getElementById('dob_input1').value;
    var dob2=document.getElementById('dob_input2').value;
    var dob3=document.getElementById('dob_input3').value;
    if(dob1=='' || dob1==null && dob2=='' || dob2==null && dob3=='' || dob3==null)
    {
        document.getElementById('headerErrorBox').style.display='block';
        document.getElementById('top-dob').style.display='block';
        document.getElementById('dob_error_msg').style.display='block';
        document.getElementById('below_error_dob_msg').style.display='block';
        document.getElementById('dob_icon').style.marginLeft='-58px';
        document.getElementById('dob_success_msg').style.display='none';
        return false;
    }
    }

3 个答案:

答案 0 :(得分:1)

将您的最后一个<select>标签名称<select name="dob_day"...更改为<select name="dob_year"...<select name="whatever_you_want_to_name_it"...,但与第一个{{1 }}标签。

编辑:  根据您的JS函数,这将在最后一个name=""标签中返回一个空值错误。

<select>

<select>

替换

答案 1 :(得分:0)

您的条件应具有 OR 而不是 AND ,这样,如果不存在任何值,则应返回false。

function dobvalidation()
{
    var dob1=document.getElementById('dob_input1').value;
    var dob2=document.getElementById('dob_input2').value;
    var dob3=document.getElementById('dob_input3').value;
    if(dob1=='' || dob1==null || dob2=='' || dob2==null || dob3=='' || dob3==null)
    {
        document.getElementById('headerErrorBox').style.display='block';
        document.getElementById('dob_success_msg').style.display='none';
        return false;
    }
    }
<div id="headerErrorBox" style="display: none;">Error!</div>
<div id="dob_success_msg" style="display: none;">Success!</div>

<select name="dob_day" onchange="return dobvalidation()" id="dob_input1"  class="frmSelect" autocomplete="off" style="width: 30%;">
  <option>DD</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">so on.. to 30</option>
</select>

<select name="dob_mm" onchange="return dobvalidation()" id="dob_input2"  class="frmSelect" autocomplete="off" style="width: 25%">
  <option>MM</option>
  <option value="January">January</option>
  <option value="Febuary">Febuary</option>
  <option value="March">so on. untill dec</option>
</select>

<select name="dob_day" onchange="return dobvalidation()" id="dob_input3"  class="frmSelect" autocomplete="off" style="width: 30%;">
  <option value="">YY</option>
  <option value="2000">2000</option>
  <option value="1999">1999</option>
  <option value="1998">1998</option>
  <option value="1997">1997</option>
</select>

答案 2 :(得分:0)

我缺少选择DD和MM中的值,因此它不起作用。

    function dobvalidation()
{
    var dob1=document.getElementById('dob_input1').value;
    var dob2=document.getElementById('dob_input2').value;
    var dob3=document.getElementById('dob_input3').value;
    if(dob1=='' || dob1==null , dob2=='' || dob2==null, dob3=='' || dob3==null)
    {
        document.getElementById('headerErrorBox').style.display='block';
        document.getElementById('top-dob').style.display='block';
        document.getElementById('dob_error_msg').style.display='block';
        document.getElementById('below_error_dob_msg').style.display='block';
        document.getElementById('dob_icon').style.marginLeft='-58px';
        document.getElementById('dob_success_msg').style.display='none';
        return false;
    }
    }
<div id="headerErrorBox" style="display: none;">Error!</div>
<div id="dob_success_msg" style="display: none;">Success!</div>

<select name="dob_day" onchange="return dobvalidation()" id="dob_input1"  class="frmSelect" autocomplete="off" style="width: 30%;">
  <option value=''>DD</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">so on.. to 30</option>
</select>

<select name="dob_mm" onchange="return dobvalidation()" id="dob_input2"  class="frmSelect" autocomplete="off" style="width: 25%">
  <option value=''>MM</option>
  <option value="January">January</option>
  <option value="Febuary">Febuary</option>
  <option value="March">so on. untill dec</option>
</select>

<select name="dob_day" onchange="return dobvalidation()" id="dob_input3"  class="frmSelect" autocomplete="off" style="width: 30%;">
  <option value="">YY</option>
  <option value="2000">2000</option>
  <option value="1999">1999</option>
  <option value="1998">1998</option>
  <option value="1997">1997</option>
</select>