2013-03-21 11 views
9

voglio aggiungere 'a' per il valore di ingresso quando clic su un pulsanteCome attivare un evento di input con jQuery?

Ecco il mio codice (con jQuery 1.4.4):

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

Tuttavia, sembra solo per trigger 'attenzione 'evento, ma non è riuscito a' premere un tasto '.

+0

Come per [trigger doc] (http://api.jquery.com/trigg er /) **, non replica perfettamente un evento presente in natura. ** –

+0

Funziona per me: http://jsfiddle.net/2YuN5/1/ ... ah aspetta, sto usando jQuery 1.9 .. . Tempo per voi di fare un aggiornamento. – ahren

risposta

7

come questo ?? Mi dispiace, sono confuso con i suoi scritti ..

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

di riferimento: .val(function(index, value));

+0

Ah, '+ 1' per leggere la domanda piuttosto che il mio approccio di solo guardare il codice. – ahren

0

non hai bisogno di pressione di un tasto o di qualsiasi altro evento di ingresso basta usare val .. e focalizzarla ...

provare questo

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

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

fiddle here

3

Perché non aggiungere semplicemente lo val()?

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

Perché voglio scrivere una demo come fancyInput. E l'evento di origine dovrebbe essere un altro keypress. Io uso clic per semplificare il codice. – user1990553

1

Secondo la documentation

Sebbene .trigger() simula un'attivazione evento, completo di un oggetto evento sintetizzato , non perfettamente replicare un in natura dell'evento.

quindi la cosa migliore che si possa fare è

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

ho conosciuto come trattare con essa.

Aggiungere un eventListener sull'evento keypress sull'input e utilizzare val per modificare il valore.

In questo modo non è necessario attivare l'evento di messa a fuoco.

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

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

Nel caso in cui è necessario prendere in considerazione la selezione corrente del cursore e il testo ...

Questo non funzionava per me per un app AngularJS su Chrome. Qualcuno ha sottolineato che l'evento trigger non renderà il personaggio visibile nel campo di input (almeno, questo è quello che stavo vedendo). Inoltre, le soluzioni precedenti non tengono conto dell'attuale posizione del cursore e della selezione del testo nel campo di input. Ho dovuto usare una meravigliosa libreria jquery-selection.

Ho un tastierino numerico su schermo personalizzato che riempie più campi di input. Ho dovuto ...

  1. In primo piano, salvare l'ultimo focus.Elemento
  2. sulla sfocatura, salvare la selezione di testo corrente (avvio e arresto)

    var pos = element.selection('getPos') 
    lastFocus.pos = { start: pos.start, end: pos.end} 
    
  3. Quando si preme un pulsante sul mio tastierino:

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

ho usato:

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

Ha funzionato per me. –

+1

I metodi val() e trigger() sono concatenati al selettore. –

+0

Il mio errore. Non mi rendevo conto che '.val (quantità)' era incatenato a differenza di un '.val()' vuoto. – cpburnz

Problemi correlati