2013-03-21 4 views
9

chcę dodać „a” do wartości wejścia po kliknięciu przyciskuJak wyzwolić zdarzenie wejściowe z jQuery?

Oto mój kod (z jQuery 1.4.4):

$("#button").click(function(){ 
    $("#input").trigger("focus"); 
    var e = jQuery.Event("keypress"); 
    e.which = '97'; 
    $("#input").trigger(e); 
}) 

Jednak wydaje się tylko do wyzwalacza „ostrości "zdarzenie, ale nie udało się" nacisnąć ".

+0

Zgodnie z [dokument wyzwalający] (http://api.jquery.com/trigg er /) **, to nie idealnie odzwierciedla naturalnie występujące wydarzenie. ** –

+0

Działa dla mnie: http://jsfiddle.net/2YuN5/1/ ... ah czekaj, używam jQuery 1.9 .. Czas na aktualizację. – ahren

Odpowiedz

7

Podoba Ci się to? Niestety, jestem zmieszany ze swoich pism ..

$("#button").click(function(){ 
    $("#input").trigger("keypress") // you can trigger keypress like this if you need to.. 
    .val(function(i,val){return val + 'a';}); 
}); 

referencyjny: .val(function(index, value));

+0

Ah, '+ 1' Ah do czytania tego pytania, a nie mojego podejścia do patrzenia na kod. – ahren

0

nie trzeba naciśnięcie klawisza lub innego zdarzenia wejścia wystarczy użyć val .. i skupić ją ...

spróbować

$("#button").click(function(){ 

    $("#input").val('a').focus(); 
}) 

fiddle here

3

Dlaczego po prostu nie dołączyć do val()?

$("#button").click(function(){ 
    $("#input").val(
    $("#input").val() + "a" 
); 
}) 
+1

Ponieważ chcę napisać demo takie jak fancyInput. A wydarzenie początkowe powinno być kolejnym naciśnięciem klawisza.Tutaj używam kliknij, aby uprościć kod. – user1990553

1

Według documentation

Chociaż .trigger() symuluje aktywacji zdarzeń, wraz z syntetyzowany obiektu zdarzenia, to jednak nie jest idealnie replikacji naturalnie występującego zdarzenia.

tak najlepiej można zrobić, to

$("#button").click(function(){ 
    $("#input").trigger("focus").val($("#input").val() + 'a'); 
}) 
1

znam jak radzić sobie z nim.

Dodaj eventListener na zdarzeniu keypress do wejścia i użyj val, aby zmienić wartość.

W ten sposób nie ma potrzeby uruchamiania zdarzenia fokusa.

$("#button").click(function(){ 
    var e = jQuery.Event("keypress"); 
    e.chara = 'a'; 
    $("#input").trigger(e); 
}); 

$("#input").keypress(function(e){ 
    $(this).val(e.chara); 
}) 
0

w przypadku trzeba wziąć pod uwagę bieżącą kursora tekstowego i wybór ...

ta nie działa dla mnie za angularjs aplikacji w Chrome. Ktoś wskazał, że zdarzenie wyzwalające nie spowoduje, że postać będzie widoczna w polu wejściowym (przynajmniej to widziałem). Ponadto poprzednie rozwiązania nie uwzględniają bieżącej pozycji kursora i wyboru tekstu w polu wejściowym. Musiałem użyć wspaniałej biblioteki jquery-selection.

Mam niestandardową klawiaturę numeryczną na ekranie, która wypełnia wiele pól wprowadzania. Musiałem ...

  1. Po ustawieniu ostrości, zapisz ostatnią ostrością.Element
  2. na rozmycie, zapisz bieżące zaznaczenie tekstu (start i stop)

    var pos = element.selection('getPos') 
    lastFocus.pos = { start: pos.start, end: pos.end} 
    
  3. Gdy zostanie naciśnięty przycisk na moim klawiaturę:

    lastFocus.element.selection('setPos', lastFocus.pos) 
    lastFocus.element.selection('replace', {text: myKeyPadChar, caret: 'end'}) 
    
6

użyłem:

$('#selector').val(quantity).trigger("input"); 
+1

Pracowałem dla mnie. –

+1

Metody val() i trigger() są powiązane z selektorem. –

+0

Mój błąd. Nie zdawałem sobie sprawy, że '.val (ilość)' jest połączona łańcuchem w przeciwieństwie do pustego '.val()'. – cpburnz