可以onblur事件处理程序绑定到每个输入元件,并且在处理程序中检查是否有任何人有焦点(使用document.activeElement)。
<script type="text/javascript">
function checkBlur() {
setTimeout(function() {
if (document.activeElement != document.getElementById("input1") &&
document.activeElement != document.getElementById("input2") &&
document.activeElement != document.getElementById("input3")) {
alert("I am called");
}
}, 10);
}
</script>
<!-- ... -->
<div>
<input type="text" id="input1" value="Inside DIV 1" onblur="checkBlur()" />
<input type="text" id="input2" value="Inside DIV 2" onblur="checkBlur()" />
<input type="text" id="input3" value="Inside DIV 3" onblur="checkBlur()" />
</div>
<input type="text" value="Outside DIV" />
或者,相反,使用jQuery可以简化程序(特别是如果你有很多的投入):
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#theDiv input").bind("blur", function() {
setTimeout(function() {
var isOut = true;
$("#theDiv input").each(function() {
if (this == document.activeElement) isOut = false;
});
if (isOut) {
// YOUR CODE HERE
alert("I am called");
}
}, 10);
});
});
</script>
<!-- ... -->
<div id="theDiv">
<input type="text" value="Inside DIV 1" />
<input type="text" value="Inside DIV 2" />
<input type="text" value="Inside DIV 3" />
</div>
<input type="text" value="Outside DIV" />
编辑:我包一个setTimeout
内的事件处理程序,以确保该其他元素有时间集中。
isOut =!jQuery.contains($(“#theDiv”).get(),document.activeElement); – Ron 2011-01-31 06:40:21