2010-06-02 5 views
1

Je veux ajouter une valeur à l'événement onchange, mais le code JS a des erreurscommande jQuery attr

$(args).attr('onChange', 'setTimeout('__doPostBack(\'ctl00$cpBody$txtDate\',\'\')', 0)'); 

quelqu'un voit erreur?

Répondre

2

Que diriez-vous du bon jQuery/Javascript meilleure façon:

$(args).bind('change', function() { 
    setTimeout(function() { 
     __doPostBack('ctl00$cpBody$txtDate',''); 
    }, 0); 
}); 

Bien que la raison pour laquelle les 0ms délai d'attente?

Vous pouvez modifier votre code:

$(args).bind('change', function() { 
    __doPostBack('ctl00$cpBody$txtDate',''); 
}); 

Avec seulement la différence fonctionnelle la plus petite (__doPostBack sera exécutée immédiatement au lieu de le plus tôt possible).

Il est préférable de fournir une fonction en tant que premier argument de setTimeout, par opposition à une chaîne. setTimeout est étroitement liée à eval, et eval est mauvaise.

1

Essayez ceci:

$(args).bind('Change','setTimeout(' 
      __doPostBack(\'ctl00$cpBody$txtDate\',\'\')', 0)'); 
+0

onChange = Modifier – jAndy

1
$(args).bind('change', function(e){ 
    setTimeout(function(){ 
     __doPostBack('ctl00$cpBody$txtDate',''); 
    }, 0); 
}); 

devrait tenir un peu mieux.