/ / Ustaw ostrość na polu tekstowym, gdy nie jest skupiony - javascript, jquery, javascript-events

Ustaw skupienie na polu tekstowym, gdy nie koncentrujesz się - javascript, jquery, javascript-events

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 № 1

Poniż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;
});