Jak wywołać akcję podczas ustawiania ostrości, ale zdarzenie fokusa nie pochodzi z kliknięcia?Ostrość Nie wyzwalana przez kliknięcie
$('#input').focus(function(){
if(not come from click)
{
alert('Holla!');
}
});
Jak wywołać akcję podczas ustawiania ostrości, ale zdarzenie fokusa nie pochodzi z kliknięcia?Ostrość Nie wyzwalana przez kliknięcie
$('#input').focus(function(){
if(not come from click)
{
alert('Holla!');
}
});
powiedzieć między "Focus" zdarzenia, które pochodzą z klawiatury i te, które pochodzą od myszy, można śledzić t zdarzenia myszy.
Po pierwsze, aby zrozumieć sekwencję zdarzeń, które dzieją się po kliknięciu wejście lub kartę do niego, spojrzeć na poniższym jsfiddle: http://jsfiddle.net/orlenko/fyFkk/
w nim, będziemy zalogować mouseDown, mouseUp, kliknij, ostrość i rozmycia zdarzenia \
<input type="text" id="zero"/>
<input type="text" id="one"/>
JavaScript.
$(function() {
var one = $('#one');
one.mousedown(function() {
console.log('mousedown');
});
one.mouseup(function() {
console.log('mouseup');
});
one.click(function() {
console.log('click');
});
one.focus(function() {
console.log('focus');
});
one.blur(function() {
console.log('blur');
});
});
Gdybyśmy po prostu kliknij na wejściu, a następnie na innej kontroli, dostaniemy następujące:
Ale jeśli zakładka do i od wejścia, zobaczymy w konsoli:
Jeśli więc śledzić mousedown i rozmycia wydarzeń, możemy powiedzieć między naciskiem klawiatury i jeden opartych na bazie myszy. Na przykład:
$(function() {
var one = $('#one');
one.mousedown(function() {
console.log('mousedown');
$(this).data('mousedown', true);
});
one.mouseup(function() {
console.log('mouseup');
});
one.click(function() {
console.log('click');
});
one.focus(function() {
if ($(this).data('mousedown')) {
console.log('You clicked it!');
} else {
console.log('You tabbed it!');
}
});
one.blur(function() {
console.log('blur');
$(this).data('mousedown', false);
});
});
ryba z tego przykładu: http://jsfiddle.net/orlenko/cwRAw/
+1 Dla pełnego wyjaśnienia :) –
Nie wiedziałem, że to również uruchamia zdarzenia myszy, dobry anons. – Tachi
Zastosowanie keyup
$('#input').keyup(function(){
alert('Called only when the focus is on element through keypress');
});
Problem z 'keyup' polega na tym, że odpala * po * fokusie. – orlenko
function ren(){
alert('Holla!');
}
$('input').focus(ren);
$('input').mousedown(function(){
$('input').off('focus',ren);
});
$('input').mouseup(function(){
$('input').on('focus',ren);
});
Nie sprawdzić w funkcji ostrości zamiast usunąć funkcję ostrości podczas dokonywania Click
Twoja funkcja wysyła przeglądarkę do nieskończonej pętli alarmowej. – Antony
@Antony sprawdź teraz – bugwheels94
Teraz działa. – Antony
można wkleić kod tutaj? – Amit