2013-03-11 11 views
6

Ho il codice seguente in una pagina, se uno dei due campi di testo cambia una funzione viene richiamata con i valori di entrambi.
Il codice funziona perfettamente, ma nell'interesse dell'efficienza mi chiedevo se riuscissi a ridurlo a un singolo blocco di codice.una chiamata al cambio di uno dei due ingressi

$('#popfrom').change(function(){ 
    var popfrom = $('#popfrom').val(); 
    var poptill = $('#poptill').val(); 

    defineDate(popfrom, poptill); 
}); 

$('#poptill').change(function(){ 
    var popfrom = $('#popfrom').val(); 
    var poptill = $('#poptill').val(); 

    defineDate(popfrom, poptill); 
}); 
+0

si potrebbe dare gli input della stessa classe e poi basta chiamare $ ('. someClass ') cambia – Pete

+0

Avrei dovuto dire che so che posso "combinarli" tramite una classe ma voglio usare i suoi id. – nhalink

risposta

12

JQuery permette più selettori, separati da virgole:

$('#popfrom, #poptill').change(function(){ ... 

Se si scopre che è necessario per lavorare con più elementi, è spesso più facile da usare un nome di classe, invece. Aggiungere una classe di "popfields" agli ingressi e si può semplicemente utilizzare:

$('.popfields').change(function(){ ... 
+0

Offcourse ... come potrei dimenticare!?! I due elementi hanno già gli id ​​che uso in uno script più grande e voglio mantenerli riconoscibili, quindi userò la soluzione separata da virgole. – nhalink

4

aggiungerli alla stessa classe, quindi eseguire.

$('.popClass').change(function(){ 
    var popfrom = $('#popfrom').val(); 
    var poptill = $('#poptill').val(); 

    defineDate(popfrom, poptill); 
}); 
0

Aggiungi stessa classe per entrambi i campi e selezionarli utilizzando jQuery '.selector'

$('.classOfTheTextFiled').change(function(){ .... 

:)

Problemi correlati