Thanks Brian, I ended up using your method in a function that gathers all of the information I was looking for at one time. I now use this loop starting at the last element and working backwards. While in the loop, I count the buttons, and password / edit fields on the page. It passes back the Edit Field count, the name of the first edit field, the count of buttons, and returns the object pointer of the first button as the return value. I could not figure out how to identify an Edit field. The Edit fields sometimes only have a name attribute. Currently the function only identifies the username and search edit fields by name! Not a generic,portable solution. Does anyone know a better way to identify an Edit field? Would there be an attribute that would always be null in a form, but all other control types in the form would return something? Perhaps I should just pass back the object pointer of the first Edit field as well and return all information as parameters by reference to make it more generic. That way it might be more useful in other cases. As it is, I call this function 3 times in this application. I will paste the function below in case anyone is interested. I welcome all comments so that I can eventually learn how to script right. Object Function FieldInfo (int ByRef iFields, string ByRef sFirstEdit, int ByRef iButtons) Var Object dom, Object array, Object o, Int l, Int i, Object oEdit, Object oButton, String sName let dom = IEGetCurrentDocument() let array = dom.getElementsByTagName("input") Let l = array.length let i = l Let iFields = 0 Let iButtons = 0 SayMessage (OT_DEBUG, "length = " + IntToString (l)) while i >= 0 let o = array(i) if o.type == "password" then SayMessage (OT_DEBUG, "password field found! i = " + IntToString (i)) Let iFields = iFields + 1 Let oEdit = o Let sFirstEdit = o.name ElIf o.class == "actionbutton" then SayMessage (OT_DEBUG, "Action button found! i = " + IntToString (i)) Let sName = o.value SayMessage (OT_DEBUG, "value = " + sName) Let iButtons = iButtons + 1 Let oButton = o ElIf o.type == "image" then SayMessage (OT_DEBUG, "Button Image found! i = " + IntToString (i)) Let sName = o.value SayMessage (OT_DEBUG, "value = " + sName) Let iButtons = iButtons + 1 Let oButton = o ElIf o.name == "userName" then SayMessage (OT_DEBUG, "Username field found! i = " + IntToString (i)) Let iFields = iFields + 1 Let oEdit = o Let sFirstEdit = o.name ElIf o.name == "testInput" then SayMessage (OT_DEBUG, "Search field found! i = " + IntToString (i)) Let iFields = iFields + 1 Let oEdit = o Let sFirstEdit = o.name endif Let i = i - 1 EndWhile SayMessage (OT_DEBUG, "Edit field count = " + IntToString (iFields)) SayMessage (OT_DEBUG, "First Edit field = " + sFirstEdit) SayMessage (OT_DEBUG, "Button count = " + IntToString (iButtons)) Let sName = oButton.value SayMessage (OT_DEBUG, "Button value = " + sName) Return oButton EndFunction Don Marang ----- Original Message ----- From: "Bryan Garaventa" <bgaraventa11@xxxxxxxxxxxxxx> To: <jawsscripts@xxxxxxxxxxxxx> Sent: Tuesday, September 15, 2009 7:17 PM Subject: [jawsscripts] Re: The GetListOfFormFields function annd Delimiters > You could do something like the following to loop through all relevant > password form fields... > > var object dom, object array, object o, int i > let dom = IEGetCurrentDocument() > let array = dom.getElementsByTagName("input") > let i = 0 > while(i < array.length) > let o = array(i) > if o.type == "password" then > > ; here is each instance of a password field within the o object. > > endif > let i = i + 1 > endWhile > > ----- Original Message ----- > From: "Donald Marang" <donald.marang@xxxxxxxxx> > To: <jawsscripts@xxxxxxxxxxxxx> > Sent: Tuesday, September 15, 2009 2:58 PM > Subject: [jawsscripts] The GetListOfFormFields function annd Delimiters > > >>I have been attempting to determine the number of Edit fields on a web >>page. I have tried to pull that information from the DOM, but I am not >>grasping how to create a collection of edit / password fields. As a >>backup, I attempted to use the GetListOfFormFields function. I can use >>this function and then pass the returned string to the >> DlgSelectItemInList function without any problems. The >> DlgSelectItemInList function will display the list showing and >> separating >> the segments properly. However, the GetListOfFormFields function has a >> delimeter as the first parameter, it does not use the delimeter >> specified! >> Therefore, I can not use StringSegmentCount to determine how many >> segments >> are in the list. I wrote my own MyStringSegnentCount before I noticed >> that the GetListOfFormFields is at fault instead and does not use the >> delimiter as the documentation suggests. Does anyone know how the >> >> DlgSelectItemInList function determines how to split up the segments? >> Is >> there a error in my logic or use in the test example below? Can anyone >> suggest a robust method to obtain the number of edit / password fields >> visible on a web page? >> >> >> Here is a test function demonstrating the improper use of delimiters >> returned in the GetListOfFormFields: >> Script SegmentTest () >> >> Var >> >> String sTestString, >> >> String sDelimiter, >> >> Int iSegments >> >> Let sDelimiter = "|" >> >> Let sTestString = "UserID/ email: Edit|password Edit| line 3 \tEdit" >> >> Let sTestString = GetListOfFormFields (sDelimiter , WT_EDIT) >> >> ; InputBox ("Enter new string: ", "Here is the full string!", >> sTestString) >> >> Let iSegments = StringSegmentCount (sTestString, sDelimiter) >> >> SayInteger (iSegments) >> >> EndScript >> >> >> Don Marang >> >> >> __________ >> Visit and contribute to The JAWS Script Repository http://jawsscripts.com >> >> View the list's information and change your settings at >> //www.freelists.org/list/jawsscripts >> > > __________ > Visit and contribute to The JAWS Script Repository http://jawsscripts.com > > View the list's information and change your settings at > //www.freelists.org/list/jawsscripts > __________ Visit and contribute to The JAWS Script Repository http://jawsscripts.com View the list's information and change your settings at //www.freelists.org/list/jawsscripts