Hi, sorry for not getting back sooner, I recently had surgery, so have been out of commission. The short answer is that not using a type attribute within an input element is bad coding. Since you are scripting someone elses page though, and only some of the edit fields don't contain a type attribute, then you could check for the following using the o object as mentioned before... if o.type == "text" || o.type == "" then ; then o is an edit field endif hope this helps. Bryan ----- Original Message ----- From: "Donald Marang" <donald.marang@xxxxxxxxx> To: <jawsscripts@xxxxxxxxxxxxx> Sent: Friday, September 18, 2009 4:32 PM Subject: [jawsscripts] Re: The GetListOfFormFields function annd Delimiters > 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 > __________ 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