我有被劃分成的div例如分隔件的一種形式:JQuery如何使焦點集中時突出顯示的表單的一部分?
<form>
<div>
Account Details
</div>
<div>
Personal Details
</div>
<div>
...etctec
</div>
</form>
我想,當有人突出或聚焦div的問題是使用CSS高亮的div中的任何元素。考慮一下這個事實,即我已經將一些處理程序應用於此表單上的某些輸入元素。
我有被劃分成的div例如分隔件的一種形式:JQuery如何使焦點集中時突出顯示的表單的一部分?
<form>
<div>
Account Details
</div>
<div>
Personal Details
</div>
<div>
...etctec
</div>
</form>
我想,當有人突出或聚焦div的問題是使用CSS高亮的div中的任何元素。考慮一下這個事實,即我已經將一些處理程序應用於此表單上的某些輸入元素。
在CSS創建一個亮點類,並嘗試以下的jQuery:
$('input, select, textarea').focus (function()
{
var elem = $(this), container = elem.parents ('div');
container.siblings().removeClass ('highlight');
container.addClass ('highlight');
})
你可以嘗試:
$('input').focus(
function(){
// adds the 'highlight' class to the parent
$(this).closest('div').addClass('highlight');
});
有了:
$('input').blur(
function(){
// removes the 'highlight' class from the parent so only one highlight is ever visible.
$(this).closest('div').removeClass('highlight');
});
,並確定在highlight
類CSS:
.highlight {
background-color: #ffa;
}
JS Fiddle demo,請注意,在演示中,我使用fieldset
真是讓人不是div
來包裝各種label
和input
元素,但除此之外,它是完全一樣的原理。
更新了演示以增加可愛度:Revised JS Fiddle。
那是偉大的 - 但是那裏有與此代碼一個小問題,即如果曾經一個div內輸入失去焦點的DIV顯示爲未加亮。有沒有辦法讓一個div保持對焦直到另一個DIV輸入元素集中在其聚焦div的父母會再得到強調
呀,假定我明白你的權利,這是相當容易:
$('input').focus(
function() {
$(this)
.closest('form')
.find('.highlight')
.removeClass('highlight');
$(this).closest('fieldset').addClass('highlight');
});
試試這個:
.highlight{background:#ddd}
$('input').focus(function(){
$(this).parent().parent().find('div.highlight').removeClass('highlight');
$(this).parent().addClass('highlight');
});
$('form > div').delegate('input', 'focus', function() {
$(this).closest('div').addClass('active');
}).delegate('input', 'blur', function() {
$(this).closest('div').removeClass('active');
});
演示:http://jsfiddle.net/ThiefMaster/fG8Au/
如果你想確保只有表單標籤內的股利的權利被突出顯示,使用$(this).closest('form > div')
。
這就是整潔 - 我如何修改它,以便如果我在div中單擊它,不會鬆動焦點..目前,如果我在div中點擊,焦點會從輸入中丟失,並且包含div會丟失分配的類。 – Ali 2011-04-10 13:18:43
這很棒 - 但是這個代碼有點問題,即如果div內的輸入失去焦點,div顯示爲不亮。有沒有辦法讓一個div保持焦點,直到另一個div中的輸入元素被聚焦,然後聚焦的div的父母將會突出顯示 – Ali 2011-04-11 05:22:04