How to loop through FORM elements?

B

Brett

The following code will allow me to loop through FORM tags but not the
elements in them. I may have five forms on one page. How do I loop through
form elements in the forth FORM?

private SHDocVw.InternetExplorer IE_Inst = new
SHDocVw.InternetExplorerClass();
.....
mshtml.IHTMLDocument2 HTMLDocument =
(mshtml.IHTMLDocument2) this.IE_Inst.Document;
mshtml.IHTMLElementCollection forms = HTMLDocument.forms;

foreach (mshtml.HTMLFormElementClass el in forms)
{

strType = el.outerHTML;
}

Once I'm in a particular FORM, I want to find certain input fields and fill
in values.

Thanks,
Brett
 
B

Brett

Brett said:
The following code will allow me to loop through FORM tags but not the
elements in them. I may have five forms on one page. How do I loop
through form elements in the forth FORM?

private SHDocVw.InternetExplorer IE_Inst = new
SHDocVw.InternetExplorerClass();
....
mshtml.IHTMLDocument2 HTMLDocument =
(mshtml.IHTMLDocument2) this.IE_Inst.Document;
mshtml.IHTMLElementCollection forms = HTMLDocument.forms;

foreach (mshtml.HTMLFormElementClass el in forms)
{

strType = el.outerHTML;
}

Once I'm in a particular FORM, I want to find certain input fields and
fill in values.

Thanks,
Brett

I'm currently getting around the problem by looping through all elements in
the Doc:

foreach (mshtml.IHTMLElement wbrElm in wbrAll)
{
// Assign the inner html values of the input to our variables
//look for only INPUT types
if(wbrElm.tagName.ToLower() == "input" &&
wbrElm.outerHTML.IndexOf("name", 1) > 0)
{
strName = wbrElm.getAttribute("name", 0).ToString();
Debug.WriteLine(wbrElm.tagName.ToLower() + " -- " + wbrElm.outerHTML);
// We are only interested in filling text boxes,
// and only interested in a specific one, i.e. "q"

if (strName != null && strName.ToLower() == userNameFormField)
// Set the "value" with the setAttribute method.
wbrElm.setAttribute("value", userNameValue, 0);


if (strName != null && strName.ToLower() == passwordFormField)
// Set the "value" with the setAttribute method.
wbrElm.setAttribute("value", passwordValue, 0);
}
} //end for each

Not the best technique.

Brett


if (strName != null && strName.ToLower() == passwordFormField)
// Set the "value" with the setAttribute method.
wbrElm.setAttribute("value", passwordValue, 0);
}
} //end for each
 
I

Ignacio Machin \( .NET/ C# MVP \)

Hi,

Is this in the client side? if so you better use javascript , this code
could give you an idea

for(int i =0 ; i < document.forms[3].elements.length; i ++ )
alert( document.forms[3].elements.tagName );

note that I did not test it, so it may have errors


cheers,

--
Ignacio Machin,
ignacio.machin AT dot.state.fl.us
Florida Department Of Transportation
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top