2009-06-28 5 views
0

J'écris une application VB qui interagit avec le DOM HTML.HTML DOM: Comment appeler la méthode de mise à jour d'une boîte SELECT?

Si je vais à cette page:

https://edit.yahoo.com/registration

Et puis essayez de changer le « je préfère de » boîte SELECT en haut à droite de « l'Asie Yahoo! » de l'option par défaut sélectionnée, Je peux le faire en utilisant cette commande:

Document.Forms.regFormBody.preferredcontent.selectedIndex = 10

il change avec succès. Mais le problème est que ce n'est pas le même comportement que si vous avez manuellement changé cette option à Yahoo! Asie en utilisant votre souris.

Si vous essayez de le faire manuellement sans utiliser le DOM, après l'avoir modifié, la page s'actualise.

Je suppose que c'est un appel javascript ou quelque chose qui actualise cette page en fonction de l'option est sélectionnée, mais j'ai essayé de répliquer ce comportement en utilisant DOM et je ne peux pas le comprendre.

Quelqu'un peut-il aider? Merci d'avance.

Répondre

0

Vous recherchez l'événement onChange. Bien sûr, il est possible que le formulaire soit soumis par un autre événement, peut-être onBlur.

Mise à jour suivante autres questions de commentaires

Apparemment, liés par la ligne suivante:

YAHOO.util.Event.on("preferredcontent", "change", ymem_reg.switchPrefContent); 

qui appelle les éléments suivants:

ymem_reg.switchPrefContent = function(e) { 
    var Dom = YAHOO.util.Dom || false; 
    if (Dom) { 
     var oForm = Dom.get("regFormBody"); 
     var sToIntl = this.options[this.selectedIndex].value; 
     var yregFormValidator = (typeof yregFormValidator !== "undefined") ? yregFormValidator: false; 
     var fieldsWithDefaults = Dom.get(["firstname", "secondname", "dd", "yyyy"]); 
     var clearVal = function(el) { 
      if (el !== null && ymem_reg.fieldHasDefaultVal(el)) { 
       el.value = ""; 
      } 
     } 
     if (oForm !== null && sToIntl !== "") { 
      if (yregFormValidator) { 
       yregFormValidator.disable(); 
      } 
      var oInput = document.createElement("input"); 
      oInput.setAttribute("type", "hidden"); 
      oInput.setAttribute("name", "IntlSwapBtn"); 
      oInput.setAttribute("id", "IntlSwapBtn"); 
      oForm.appendChild(oInput); 
      Dom.batch(fieldsWithDefaults, clearVal); 
      oForm.submit(); 
     } 
    } 
} 
+0

Mais si vous examinez la case SELECT en question , vous remarquerez qu'il n'y a pas de comportement onChange apparemment lié à cela. Pouvez-vous trouver l'appel javascript qu'il fait quand il est changé? –

+0

Réponse Mise à jour. – Sampson

+0

C'est génial. Vous ne savez pas comment vous avez réussi à disséquer cela, mais je vais le prendre. Mais je n'arrive toujours pas à comprendre comment utiliser le DOM pour répliquer ce comportement. J'essaie de le faire en VB: 'Document.Forms.regFormBody.preferredcontent.selectedIndex = 10 ' Set newElem = IE.Document.createElement ("bouton") 'newElem.setAttribute "onclick", « ymem_reg.switchPrefContent(); " 'IE.Document.Body.InsertBefore nouveauElem, IE.Document.Body.FirstChild ' IE.Document.Body.FirstChild.Click mais cela ne fonctionne pas :(Le nouveau bouton est créé mais quand je clique dessus , rien ne se passe. –

Questions connexes