您如何使用 JavaScript 或 jQuery 检测哪个表单输入具有焦点?
在函数中,我希望能够确定哪个表单输入具有焦点。我希望能够在直接的 JavaScript 和/或 jQuery 中做到这一点。
您如何使用 JavaScript 或 jQuery 检测哪个表单输入具有焦点?
在函数中,我希望能够确定哪个表单输入具有焦点。我希望能够在直接的 JavaScript 和/或 jQuery 中做到这一点。
document.activeElement
,它在 IE 中得到了很长时间的支持,最新版本的 FF 和 chrome 也支持它。如果没有焦点,则返回document.body
对象。
我不确定这是否是最有效的方法,但您可以尝试:
var selectedInput = null;
$(function() {
$('input, textarea, select').focus(function() {
selectedInput = this;
}).blur(function(){
selectedInput = null;
});
});
如果您只想在获得焦点时更改特定表单字段的 CSS,您可以使用 CSS ":focus" 选择器。为了与不支持此功能的 IE6 兼容,您可以使用IE7库。
否则,您可以使用 onfocus 和 onblur 事件。
就像是:
<input type="text" onfocus="txtfocus=1" onblur="txtfocus=0" />
然后在你的javascript中有这样的东西
if (txtfocus==1)
{
//Whatever code you want to run
}
if (txtfocus==0)
{
//Something else here
}
但这只是我的做法,如果你有,比如 10 个输入,它可能不是非常实用:)
我会这样做:我使用了一个函数,如果它发送的元素的 ID 是一个会触发我的事件的元素,它将返回一个 1,而所有其他元素将返回一个 0,然后“if”语句将只是失败并且不做任何事情:
function getSender(field) {
switch (field.id) {
case "someID":
case "someOtherID":
return 1;
break;
default:
return 0;
}
}
function doSomething(elem) {
if (getSender(elem) == 1) {
// do your stuff
}
/* else {
// do something else
} */
}
HTML 标记:
<input id="someID" onfocus="doSomething(this)" />
<input id="someOtherID" onfocus="doSomething(this)" />
<input id="someOtherGodForsakenID" onfocus="doSomething(this)" />
前两个将在 doSomething 中执行事件,最后一个不会(或者如果未注释将执行 else 子句)。
-汤姆