JS检查值是否存在

时间:2017-06-15 17:04:14

标签: javascript

出于某种原因,我的JS没有按照我的想法做出反应。 页面加载时禁用提交按钮。

当在基准字段中输入en值时,应该更改类,并且应该启用提交按钮。两者都没有发生。

这似乎是一个标准代码,但仍然是一个问题?

window.onload = function() {
  document.getElementById('form_submit').disabled = true;
}

function validate() {
  if (document.getElementById('datum').value == false) {
    document.getElementById('div_datum').className = "col-md-2 input-group has-warning";
  } else {
    document.getElementById('div_datum').className = "col-md-2 input-group has-success";
    document.getElementById('form_submit').disabled = false;
  }
}
<div class="container">
  <div class="form-group row">
    <label for="datum" class="col-md-2 form-label">Datum toolbox</label>
    <div class="col-md-2 input-group has-warning" id="div_datum">
      <input type="text" class="form-control datepicker" id="datum" name="datum" onkeyup="validate()" onclick="validate()"><span class="input-group-addon"><span class="glyphicon glyphicon-remove" aria-hidden="true" data-toggle="tooltip" title="Verplicht veld"></span></span>
    </div>
  </div>
  <button type="submit" class="btn btn-primary" id="form_submit">Verstuur</button>

</div>

1 个答案:

答案 0 :(得分:4)

这一行:

if (document.getElementById('datum').value == false)

将分支到几个值的附加if块中(例如,如果我输入0,而不是仅当值为空时(因为"0" == false是奇怪的,{{1}对空值进行更可靠的检查是:

true

仅当if (!document.getElementById('datum').value) value时才会分支。 (如果要清除前导空格和尾随空格,可能会也可能不想将""添加到.trim()。)

另外,我无法帮助,但我们注意到您的value函数从未将validate设置为disabled,仅true。如果我输入内容然后退格呢?您可能想要再次禁用该按钮。所以:

false

或更多重构:

function validate() {
  if (document.getElementById('datum').value == false) {
    document.getElementById('div_datum').className = "col-md-2 input-group has-warning";
    document.getElementById('form_submit').disabled = true;
  } else {
    document.getElementById('div_datum').className = "col-md-2 input-group has-success";
    document.getElementById('form_submit').disabled = false;
  }
}

请注意,{1}}已添加到ES 5.1(2011年6月)中,因此它不会存在于IE8等过时的浏览器中,尽管它可以是polyfilled;请参阅polyfill的链接。