【发布时间】:2015-02-10 21:08:14
【问题描述】:
我有以下 HTML
...
<div class="content-row"><div class="col-md-4"></div>
<div class="col-md-4">
<form>
<div id='undiv' class="form-group"><label for="uname">Name:</label><input id="uname" type="text" class="form-control"/></div>
<div class="form-group"><label for="email">Email (optional):</label><input id="email" type="text" class="form-control" /></div>
<div class="form-group"><label for="gamecode">Game Code:</label><input id="gamecode" type="text" class="form-control" /></div>
<div class="form-group pull-right"><input id="join" type="button" value="Join" class="btn btn-primary btn-lg btn btn-primary btn-lg" /></div>
</form>
</div><div class="col-md-4"></div>
</div>
....
body中HTML下面的Javascript
<script type='text/javascript'>
var uname = document.getElementById("uname");
var email = document.getElementById("email");
var gamecode = document.getElementById("gamecode");
var joinbtn = document.getElementById("join");
var notify = document.getElementById("notify");
var undiv = document.getElementById("undiv");
...
uname.addEventListener("blur",function(evt) {
console.log('onblur');
var un = uname.value;
console.log(un);
if(un.length >= 2) {
undiv.className += " has-success has-feedback";
undiv.innerHTML += '<span id="mark" class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>';
}
else {
undiv.className += " has-error has-feedback";
undiv.innerHTML += '<span id="mark" class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span>';
}
//uname.value = un;
});
uname.addEventListener("focus",function(evt) {
console.log('onfocus');
undiv.className = "form-group";
var mark = document.getElementById("mark");
if(mark !=null) {
mark.parentNode.removeChild(mark);
console.log("mark="+mark);
}
});
</script>
onfocus 和 onblur 事件上的 uname 仅触发一次。
我在button click event 上有另一个eventListener,它工作正常。
我不明白为什么 focus 和 blur eventListeners 在事件发生时不触发?
Chrome 和 Firefox 上的调试器没有显示错误或警告...我不明白出了什么问题?
【问题讨论】:
-
uname输入被您的 onblur 处理程序覆盖(删除并重新创建),因为您正在设置其容器 div 的innerHTML。
标签: javascript html twitter-bootstrap