首页 新闻 搜索 专区 学院

问一个貌似极简单,实则极难的问题

0
悬赏园豆:20 [已解决问题] 解决于 2009-06-10 23:08

写一段js代码,实现以下功能(可以用 jquery)。代码要兼容大多主流浏览器。

一个form 中有多个input, 在任意一个 input 的 失去焦点事件中,判断焦点是否在当前form的其它input中。也就是判断焦点是否离开了当前form所有的input。

luotong的主页 luotong | 初学一级 | 园豆:7
提问于:2009-06-04 13:52
< >
分享
最佳答案
0

//刚写的,支持多表单,楼主试一下.
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)
}
}
}
}
};

I,Robot | 大侠五级 |园豆:9583 | 2009-06-04 14:52
其他回答(3)
0

1. 使用event.srcElement来获取当前焦点所在元素

2. 找到当前form下面的所有INPUT

3. 比较1,2中的元素

Leox | 园豆:461 (菜鸟二级) | 2009-06-04 15:15
0

<script>

alert("bing du");

</script>

虫虫的快乐 | 园豆:205 (菜鸟二级) | 2009-06-04 15:26
0

因为FF中没有focusout和focusin事件,blur事件又没有toElement/fromElement或alternateTarget可以使用,因此这个问题是很麻烦的

使用jquery的话,建议找一下一个叫jquery.delegate的插件,他会给元素加上focusout/focusin事件,然后通过focusout中的属性判断焦点是移到了哪一个控件上

Gray Zhang | 园豆:17610 (专家六级) | 2009-06-06 00:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册