我使用input:focus + label
的樣式來以可視方式指示何時使用鍵盤導航對輸入進行了聚焦。鼠標移除後,方便鍵盤友好的方式從複選框標籤中移除焦點樣式
但使用鼠標點擊輸入後,Chrome瀏覽器(也可能不只是Chrome?)仍然存在:focus
狀態,這看起來很醜。
我想刪除:focus
的造型後點擊而不改變鍵盤導航。即在您點擊標籤後移開鼠標時,它不應再呈紅色。
我已經看到建議.blur()
在mouseup上的輸入;但1)它沒有爲我工作(見下面的代碼片段),2)我擔心它會使鍵盤導航脫離其通常的流程。
是的,有人用鼠標點擊一個複選框,然後去鍵盤導航是一個邊緣案例。但這是我想說明的一個問題。
$("label").mouseup(function() {
\t $(this).blur(); // This has no apparent affect.
\t $("#" + this.htmlFor).blur(); // Or this.
});
input:hover + label, input:focus + label {
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<p>Form Part One</p>
<input type="checkbox" id="cb1" name="cb" /><label for="cb1">First Checkbox</label><br>
<input type="checkbox" id="cb2" name="cb" /><label for="cb2">Second Checkbox</label>
<p>Form Part Two</p>
<input type="radio" id="r1" name="r" /><label for="r1">First Radio</label><br>
<input type="radio" id="r2" name="r" /><label for="r2">Second Radio</label>
</form>
什麼是獲得焦點後,立即取出聚焦點?這會在用戶點擊鼠標時以任何速度閃爍元素紅色。 – Cruiser
這種風格旨在向用戶表明他們的點擊/按鍵將選擇輸入。從技術角度來看,點擊輸入後,點擊空格鍵會對該輸入產生標準效果,假設用戶使用鼠標導航窗體並且不需要保留懸停/焦點樣式似乎是合理的。我想要一個解決方案,既「鼠標右鍵」,鼠標用戶仍然適用於在鼠標和鍵盤之間來回切換的用戶。 – mac9416
您是否正在尋找一種方法來解決Chrome中的問題,或者您是否在尋找完全不同的實現來完全繞開這個問題? – TylerH