Tämä liittyy js + jqueryyn, en tiedä termiä mutta jos teen yleisen funktion:
$('.form-info').on("change", function() {
niin miten saan tuon siten että jokainen input jossa kyseinen luokka on käynnistää kyseisen funktion täysin omassa scopessaan ?
Eli jos tuota jatkaa niin että tulisi timeout, eli funktio odottaa hetken ennen jatkamista ja jos se käynnistyy _samasta_ elementistä uudestaan niin timeout resetoidaan. Mutta jokaiselle elementille täytyisi olla oma timeout-muuttujansa !
Tälle joku viisaampi varmasti osaisi kertoa jonkin terminkin...
tämä ei siis toiminut...
$('.form-info').on("change", function() { clearTimeout(MainInputSaveTimeOut); var fieldTmpTmp=$(this); MainInputSaveTimeOut = setTimeout(function() { formInfoSave(fieldTmpTmp); ....
Tässä yksi tapa.
$(".form-info").each(function () { var timeout = null; $(this).on("change", function () { clearTimeout(timeout); timeout = setTimeout(function () { // ... }, 1337); }); });
Jos omalle scopelle ei ole muuta tarvetta kuin timeoutin id:n säilytys erikseen joka elementille, voit käyttää samaa funktiota ja käyttää data-funktiota.
$(".form-info").on("change", function() { clearTimeout($(this).data("timeout")); $(this).data("timeout", setTimeout(foo)); });
jlaire: eikö tuo var timeout = null jo resetoi tuon timeoutin ?
Kiitos joka tapauksessa vastauksista, molemmat vaikuttaa hyviltä
Aihe on jo aika vanha, joten et voi enää vastata siihen.