写一段js代码,实现以下功能(可以用 jquery)。代码要兼容大多主流浏览器。
一个form 中有多个input, 在任意一个 input 的 失去焦点事件中,判断焦点是否在当前form的其它input中。也就是判断焦点是否离开了当前form所有的input。
//刚写的,支持多表单,楼主试一下.
window.onload = function() {
var options = {};
var forms = document.getElementsByTagName("form");
if (forms && forms.length) {
for (var i = 0; i < forms.length; i++) {
var form = forms[i];
var id = "form_" + i;
options[id] = false;
var elements = form.getElementsByTagName("input");
if (elements && elements.length) {
for (var x = 0; x < elements.length; x++) {
(function(index, f) {
var item = elements[index];
item.onfocus = function() {
options[f] = false;
}
item.onblur = function() {
options[f] = true;
setTimeout(function() { if (options[f]) { /*要做什么就写在这里*/alert(f + "失去焦点."); } }, 10);
}
})(x,id)
}
}
}
}
};
1. 使用event.srcElement来获取当前焦点所在元素
2. 找到当前form下面的所有INPUT
3. 比较1,2中的元素
<script>
alert("bing du");
</script>
因为FF中没有focusout和focusin事件,blur事件又没有toElement/fromElement或alternateTarget可以使用,因此这个问题是很麻烦的
使用jquery的话,建议找一下一个叫jquery.delegate的插件,他会给元素加上focusout/focusin事件,然后通过focusout中的属性判断焦点是移到了哪一个控件上