出于某种原因,我的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>
答案 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的链接。