2017-01-20 13 views
9

proszę wykonać następujące dwa etapy:Jak mogę wykryć kliknięcie określonego elementu?

  • ostrość na input klikając w niego
  • a teraz kliknij na button

$("input").on({ 
 
    focusout: function() { 
 
    \t this.value += "one|"; 
 
    } 
 
}); 
 

 
$("button").on("click", function(){ 
 
    $old_val = $("input").val(); 
 
    $("input").val($old_val+"two|"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" /> 
 
<button>Add "two"</button>

wynik będzie : one|two|! Cóż, nie chcę tego. Chcę wyłączyć focusout po kliknięciu przycisku. Jak mogę to zrobić?

Oczekiwany wynik po wykonaniu tych dwóch kroków powinien wynosić two|.

+6

focusOut występuje przed kliknięciem przycisku, tak nie można „wyłączyć focusOut po kliknięciu przycisku” jak to już zwolniony. –

+0

@ freedomn-m Czy nie mogę ustawić warunku 'if' w' focusout', aby sprawdzić następne zdarzenie, a jeśli następne zdarzenie kliknie przycisk, to zwróci false? –

+2

Czy możesz szczegółowo opisać swój przypadek użycia? Co próbujesz osiągnąć (poza "Chcę, żeby to było" dwa | "- dlaczego to powinno być?) Wygląda to na XY Problem: gdzie próbujesz rozwiązać X, wykonując Y, a więc chcesz wiedzieć jak do Y - jeśli wiemy, czym jest X, możemy pomóc –

Odpowiedz

2

Nie chcesz, aby przycisk wywoływał domyślne zdarzenie mousedown, w którym przeglądarki zmieniają fokus. Korzystanie z e.preventDefault() spowoduje zatrzymanie tego zdarzenia, jeśli przypiszesz je do zdarzenia na przycisku.

$("input").on({ 
 
    focusout: function() { 
 
    \t this.value += "one|"; 
 
    } 
 
}); 
 
$("button").on("mousedown", function(e) { 
 
    e.preventDefault(); 
 
}); 
 
$("button").on("click", function(){ 
 
    $old_val = $("input").val(); 
 
    $("input").val($old_val+"two|"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" /> 
 
<button>Add "two"</button>

+0

Domyślam się, że usunąłeś komentarz, ale to nie wyłącza focusa ... uruchom fragment kodu i kliknij wejście i następnie kliknij w dowolnym miejscu oprócz przycisku – Chase

+1

To, co to robi, skutecznie zmienia kolejność zdarzeń, wystrzeliwując kliknięcie przed ustawieniem ostrości, co pozwala OP dodawać kod do rem ove focusout ... lub coś :) –

+0

@ freedomn-m Tak ... Świetny pomysł, prawda? ';-)' –

Powiązane problemy