2009-07-16 3 views
6

Ho 3 caselle di testo e sull'evento keyup per tutti e 3, desidero chiamare la stessa funzione?JQuery, associare la stessa funzione all'evento keyup di 3 diversi textbox

Nel codice qui sotto, Tring di legarsi keyup evento per CalculateTotalOnKeyUpEvent funzione per una casella di testo di nome compensation, ma non funziona:

$("#compensation").bind("keyup", CalculateTotalOnKeyUpEvent(keyupEvent)); 

function CalculateTotalOnKeyUpEvent(keyupEvent) { 
    var keyCode = keyupEvent.keyCode; 
    if (KeyStrokeAllowdToCalculateRefund(keyCode)) { 
    CalculateTotalRefund(); 
    } 
}; 

risposta

12

È necessario fare come questo:

// Edit according to request in the comment: 
// in order to select more than one element, 
// you need to specify comma separated ids. 
// Also, maybe you need to consider to use a CSS class for the selected elements, 
// then it could be just $(".className") 
$("#element1, #element2, ....").bind("keyup", CalculateTotalOnKeyUpEvent); 

È necessario passare la funzione come parametro, non è necessario passare la funzione come è stata dichiarata.

+0

+1 mi ha battuto. – geowa4

+0

probabilmente dovrebbe illuminare come ottenere tutte e tre le caselle di testo. – geowa4

+0

Tu, giusto, io non volevo farlo, dato che c'era una risposta dopo di me che lo faceva notare. –

5
$("#txt1, #txt2, #txt3").keyup(fn); 
0

Stai chiamando CalculateTotalOnKeyUpEvent immediatamente, non passandolo come argomento. Prova questo:

$("#compensation").bind("keyup",CalculateTotalOnKeyUpEvent); 
0
$("#compensation").bind("keyup",CalculateTotalOnKeyUpEvent(keyupEvent)); 

Quando si scrive CalculateTotalOnKeyUpEvent (keyUpEvent) [nota il() dopo il nome della funzione], si sta eseguendo il CalculateTotalOnKeyUpEvent e assegnare il risultato della funzione al tasto up dell'evento.

Si dovrebbe fare qualcosa di simile,

$('#compensation, #otherId1, #otherId2') 
    .bind('keyup', CalculateTotalOnKeyUpEvent); 

Dove 'otherId1' e 'otherId2' sono gli ID dei due caselle di testo.

2

o semplicemente dare tutte e 3 le caselle di testo della stessa classe e si può andare

Problemi correlati