Fel*_*rea 5 html javascript alert google-chrome
考虑以下代码:
var input = document.getElementById("hello");
input.addEventListener('blur', function() {
alert('hello');
input.select();
input.focus();
});Run Code Online (Sandbox Code Playgroud)
<input type="text" value="hello" id="hello" />Run Code Online (Sandbox Code Playgroud)
围绕它的想法是让用户专注于输入,直到他/她输入有效文本.这是代码的简化版本.
Js在这里小提琴:https://jsfiddle.net/wzwft49w/9/
问题:如果您专注于输入然后模糊它,您将在Chrome中获得无限警报弹出窗口,但不会在IE中获得.
你怎么解决这个问题?
2.为什么会发生这种情况的任何想法?
笔记:
小智 2
这是我的 chrome 解决方案:
var inputs = document.querySelectorAll("input"),
len = inputs.length,
i;
var gflag=false;
function myalert(m,o) {
if (gflag) {
return;
}
gflag=true;
alert(m);
o.focus();
setTimeout(function() {gflag=false;},10);
}
function makeBlurHandler() {
"use strict";
return function () {
if (this.value === "") {
myalert("Cannot be blank!",this);
this.nextElementSibling.innerHTML = "Cannot be blank!";
} else {
this.nextElementSibling.innerHTML = "";
}
};
}
for (i = 0; i < len; i++) {
inputs[i].addEventListener("blur", makeBlurHandler());
}Run Code Online (Sandbox Code Playgroud)
.errorMessage {
color: red;
}Run Code Online (Sandbox Code Playgroud)
<p>
<label for="userName">User Name:</label>
<input type="text" id="userName">
<span class="errorMessage"></span>
</p>
<p>
<label for="passWord">Password:</label>
<input type="text" id="passWord">
<span class="errorMessage"></span>
</p>Run Code Online (Sandbox Code Playgroud)
它也适用于 IE,但不适用于 Firefox,因为 focus() 无法正常工作。
| 归档时间: |
|
| 查看次数: |
2688 次 |
| 最近记录: |