2009-07-30 6 views
0

J'ai un problème avec Ajax.Déclenchement d'un POST Ajax sur l'événement onblur()

Il existe un champ de saisie et je souhaite soumettre la valeur modifiée à l'événement onblur(). Tout fonctionne bien sauf qu'il y a un scintillement irritant.

Je tape la nouvelle valeur et je clique. L'ancienne valeur clignote alors avant que la valeur ne passe à la nouvelle valeur ...

Voici comment je le fais. J'attache une fonction onblur à l'élément d'entrée:

onblurevent = function() 
    { 
    HN.Gui.HTML.post(bindingpage, bindingref, this.value); 
    }; 
    HN.Util.addEvent(elem, "blur", onblurevent); 

L'événement est lié à une fonction util:

HN.Util.addEvent = function(obj, type, fn) 
{ 
    if (obj.attachEvent) { 
    obj['e'+type+fn] = fn; 
    obj[type+fn] = function(){obj['e'+type+fn](window.event);}; 
    obj.attachEvent('on'+type, obj[type+fn]); 
    } else 
    obj.addEventListener(type, fn, false); 
}; 

Et il déclenche un poste jquery quand il se déclenche:

HN.Gui.HTML.post = function(page, ref, value) 
{ 
    var json = (value == "") 
    ? {clear: "contents"} 
    : {set: {formula: value}}; 

    var url = page + ref + "?attr"; 

    $.post(url, JSON.stringify(json)); 
}; 

Tout est plutôt simple.

+0

Pouvez-vous poster un échantillon de code de ce que vous faites? – seth

+0

Seth, posté un peu plus de détails ... –

+0

Quel (s) navigateur (s) voyez-vous le scintillement? –

Répondre

0

avéré être un artefact de notre cycle de mise à jour Ajax:

  1. changement de fin avant
  2. POST AVAL
  3. COMET notification de changement à la fin de l'avant de l'arrière-end
  4. redessiner le front-end

Problème était la notification a été déclenchée deux fois - une fois avant que la «nouvelle» valeur avait traversé et puis wh fr il a fait, qui a causé le scintillement ...