現代瀏覽器支援 CSS :focus 偽類實現輸入框聚焦樣式,但 IE6 不支援。需用 JavaScript 彌補,jQuery 讓這變得極簡單。
<form>
<dl>
<dt>Name:</dt> <dd><input type="text" /></dd>
<dt>Password:</dt> <dd><input type="password" /></dd>
<dt>Textarea:</dt> <dd><textarea></textarea></dd>
</dl>
</form>
/* 現代瀏覽器 CSS */
input[type="text"]:focus,
input[type="password"]:focus,
textarea:focus {
border: 1px solid #f00;
background: #fcc;
}
$():選擇器引擎,返回 jQuery 對象 (類數組,鏈式調用).focus()、.blur()、.css()、.addClass() 等on 前綴:focus 而非 onfocus// 屬性選擇器語法
$("input[type='text'], input[type='password'], textarea")
$("input[type='text'], input[type='password'], textarea")
.focus(function() {
$(this).addClass("focused"); // 或直接 .css({border: '1px solid #f00', background: '#fcc'})
})
.blur(function() {
$(this).removeClass("focused");
});
.focused {
border: 1px solid #f00;
background: #fcc;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>jQuery Focus Polyfill for IE6</title>
<style>
.focused { border: 1px solid #f00; background: #fcc; }
/* 現代瀏覽器原生支援 */
input[type="text"]:focus,
input[type="password"]:focus,
textarea:focus { border: 1px solid #f00; background: #fcc; }
</style>
<script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
<script>
$(function() {
// 僅 IE6 需要,可做瀏覽器判斷或直接綁定 (現代瀏覽器不影響)
$("input[type='text'], input[type='password'], textarea")
.focus(function() { $(this).addClass("focused"); })
.blur(function() { $(this).removeClass("focused"); });
});
</script>
</head>
<body>
<form>
<dl>
<dt>Name:</dt> <dd><input type="text" /></dd>
<dt>Password:</dt> <dd><input type="password" /></dd>
<dt>Textarea:</dt> <dd><textarea></textarea></dd>
</dl>
</form>
</body>
</html>
$(document).on('focus', 'selector', fn)if (!('onfocusin' in document)) 判斷是否需補丁.toggleClass()