Il linguaggio JavaScript
 

Cattura la modifica di un qualsiasi input interno ad un form.

Puz740 19 Giu 2015 09:40
Ho questa necessità,
ho un form con un tot di campi input e select, devo lanciare una
funzione SE uno qualsiasi dei campi di input o delle select cambia
rispetto al valore di default che ha.

Come posso fare?

Intercetto il click ed il change e paragono il vecchio valore col nuovo?
Oppure c'è qualcosa di meno macchinoso e più immediato?
fmassei@gmail.com 19 Giu 2015 11:52
On Friday, June 19, 2015 at 9:40:09 AM UTC+2, Puz740 wrote:
> Ho questa necessità,
> ho un form con un tot di campi input e select, devo lanciare una
> funzione SE uno qualsiasi dei campi di input o delle select cambia
> rispetto al valore di default che ha.
>
> Come posso fare?
>
> Intercetto il click ed il change e paragono il vecchio valore col nuovo?
> Oppure c'è qualcosa di meno macchinoso e più immediato?
>

In jQuery:

$('....').on('change input', function() { ... });

dovrebbe andare sia su select the text ('input' ti prende l'evento anche
senza che si cambi il focus).

Ciao!
Andrea Scartabelli 19 Giu 2015 12:06
On 19/06/15 11:52, fmassei@gmail.com wrote:
> On Friday, June 19, 2015 at 9:40:09 AM UTC+2, Puz740 wrote:
>> Ho questa necessità,
>> ho un form con un tot di campi input e select, devo lanciare una
>> funzione SE uno qualsiasi dei campi di input o delle select cambia
>> rispetto al valore di default che ha.
>>
>> Come posso fare?
>>
>> Intercetto il click ed il change e paragono il vecchio valore col nuovo?
>> Oppure c'è qualcosa di meno macchinoso e più immediato?
>>
>
> In jQuery:
>
> $('....').on('change input', function() { ... });
>
> dovrebbe andare sia su select the text ('input' ti prende l'evento anche
> senza che si cambi il focus).

Aggiungo che, jQuery o no, bisognerebbe sfruttare la delegazione degli
eventi e assegnare un solo handler al contenitore degli elementi.

Se non dico una sciocchezza, jQuery dovrebbe avere anche un parametro
aggiuntivo nella sintassi di cui sopra per filtrare direttamente gli
elementi che scatenano l'evento da catturare.
Alessandro Pellizzari 20 Giu 2015 09:16
Il Fri, 19 Jun 2015 12:06:45 +0200, Andrea Scartabelli ha scritto:

> On 19/06/15 11:52, fmassei@gmail.com wrote:
>> On Friday, June 19, 2015 at 9:40:09 AM UTC+2, Puz740 wrote:

>>> ho un form con un tot di campi input e select, devo lanciare una
>>> funzione SE uno qualsiasi dei campi di input o delle select cambia
>>> rispetto al valore di default che ha.

>> $('....').on('change input', function() { ... });

Occhio che "input" è supportato solo sui browser seri o semi-seri.
Non va su IE8 e inferiori.

> Se non dico una sciocchezza, jQuery dovrebbe avere anche un parametro
> aggiuntivo nella sintassi di cui sopra per filtrare direttamente gli
> elementi che scatenano l'evento da catturare.

Sì, basta aggiungerlo come secondo parametro:

$('form.blablabla').on('change input', 'input, select, textarea, button',
function() { ... });

Per supportare i browser più vecchi bisogna usare keyup al posto di input
come evento.

Bye.

Links
Giochi online
Dizionario sinonimi
Leggi e codici
Ricette
Testi
Webmatica
Hosting gratis
   
 

Il linguaggio JavaScript | Tutti i gruppi | it.comp.lang.javascript | Notizie e discussioni javascript | Javascript Mobile | Servizio di consultazione news.