2010-02-04 6 views
2

Je javascript je veux courir quand un champ caché est changé (via javascript) Est-il possible de le faire? (Ou en tout cas du tout d'avoir un champ qui ne sont pas « visible » dans asp mvc que je peux obtenir un événement de changement sur)Comment dire quand un champ caché est changé

NOTE: Je confirme que ce n'est pas le fait que le champ qui est caché c'est le problème, mais le fait que le champ soit mis à jour avec javascript! L'événement change ne se déclenche pas lorsque je mets à jour un champ avec javascript.

Edité

Pour clarifier ce fonctionne:

//set up change event 
$('#154').change(function() { 
ScoringDerivation(154, 6,162,165);;                
         }); 

<select id="154" name="154"><option value="">&lt;Select&gt;</option> 
<option value="6001">Good</option> 
<option value="6002">Average</option> 
<option value="6003">Poor</option> 
<option selected="selected" value="6004">No Match</option> 
</select> 

Mais cela ne veut pas:

//set up change event 
$('#165').change(function() { 
    DerivationAdd3(165,166,167,226);; 
}); 


<input id="165" name="165" type="hidden" value="0" /><label id="165Label" name="165Label">0</label> 

Répondre

2

Utilisez jQuery pour faire la vérification.

$('#FieldId').change(function() { alert(9); }) 

il peut être modifié ou modifié. non testé mais j'utilise similaire.

Google jQuery;

fait, voici la source dont vous avez besoin, je pense. change()-jQuery

+0

ok, ce que j'ai essayé ... ne fonctionne pas (avoir modifié mon post ci-dessus) –

+1

cool, donc en gros la solution est que, après mettre à jour un champ avec javascript, je dois exécuter le .Modification.() commande ... –

1

Si vous utilisez le Javascript pour changer le champ caché, pourquoi pas seulement Est-ce que Javascript appelle la fonction onchange désirée?

+0

parce que je suis en cours d'exécution d'une commande .GetJSON $, et la fonction onchange se tirai avant que les résultats viennent dans, ( –

0

J'ai eu ce problème et ne pouvait pas déclencher l'événement de changement puisque je ne peux pas modifier le code qui est effectivement mise en sur le terrain. Voici donc ce que je faisais:

var file = $("#hidden_field_id"); 
var previous_value = file.attr("defaultValue"); 
var interval = setInterval(function(){ 
    if(previous_value != file.val()){ 
    fire_change_event(previous_value, file.val()); 
    previous_value = file.val(); 
    } 
}, 50); 
$(window).unload(function(){clearInterval(interval);}); 

Cela a semblé fonctionner dans les 3 minutes de test, je l'ai fait;)

Questions connexes