Chcę, aby pole tekstowe było zawsze skupione. Po kliknięciu pola tekstowego chcę, aby fokus wrócił do pola tekstowego.
Jak mogę to osiągnąć za pomocą jquery?
$("input").focus();
$("input").**unfocused?**( function($) { $("input").focus();} );
Odpowiedzi:
0 dla odpowiedzi № 1Poniższy kod jest rozwiązaniem alternatywnym, które zależy od okresowego sprawdzania stanu kontroli.
var controlFocus=false;
$("#txtName").focus(function(){
$(this).addClass("focused");
if(!controlFocus) {
controlFocus = true;
setInterval(function(){
var o = $("#txtName");
if(!o.hasClass("focused")) o.focus();
}), 200);
}
}).blur(function(){$(this).removeClass("focused");});
Po otrzymaniu pierwszego pola tekstowego (o nazwie txtName), co 0,2 sekundy, kod kontroluje, czy pole tekstowe jest aktywne. Jeśli tak nie jest, to jest skupione. Ale to może być naprawdę denerwujące.
3 dla odpowiedzi № 2
Szukasz tego blur
zdarzenie:
$(":text").blur(function() { this.focus(); });
0 dla odpowiedzi № 3
Powiąż, aby uzyskać zdarzenie zmiany, i sprawdź, czy fokus musi być zmuszony do tego wejścia, jeśli tak, wstaw niektóre dane do dokumentu. $ (dokument) .data („_ force_focus”, e.target)
$("input.force").bind("change", function(e) {
if( need_force_focus() ) {
$(document).data("_force_focus", e.target);
} else {
$(document).removeData("_force_focus");
}
});
Teraz w dokumencie połącz się z wydarzeniem focusin,testowanie, czy dokument ma dane „_force_focus”. Jeśli tak, ustaw ostrość na wartość. Ważne jest, aby uniemożliwić skupienie retriggera poprzez testowanie na e.target
$(document).bind("focusin", function (e) {
var t = $.data(document, "_force_focus");
if( t && e.target !== t ) {
$(t).trigger("focus");
return false;
}
return true;
});