Thanks Brian, that will make my code more reusable in the future! Strange thing. I found an INPUT element after the last visible graphic action button. There are many elements in these forms that have a type="hidden", including 2 after the button. The problem is that this INPUT element does not have a type, name or value attribute! I looked through the HTML source and could not find such an element. Could it be finding a search box in an IE Toolbar? To eliminate this element, I changed your code to: if o.type == "password" then SayMessage (OT_DEBUG, "password field found! i = " + IntToString (i)) Let iFields = iFields + 1 Elif ( o.type == "text" || o.type == "" ) && o.name != "" then SayMessage (OT_DEBUG, "Text Edit field found! i = " + IntToString (i)) Let iFields = iFields + 1 ... EndIf Don Marang ----- Original Message ----- From: "Bryan Garaventa" <bgaraventa11@xxxxxxxxxxxxxx> To: <jawsscripts@xxxxxxxxxxxxx> Sent: Thursday, September 24, 2009 3:33 AM Subject: [jawsscripts] Re: The GetListOfFormFields function annd Delimiters > Nothing too bad, just a tune up and some hardware removal. > > If there is no type attribute set, it's safe to assume that it is a text > field. There should not be any default maxlength however if none is > stated, > though there may be a visible size default, but I'm not sure what this is > if > so. > > If the input is type=image, then this would indicate the same lement type > as > type=button. The only difference is that type=image allows the displaying > of > an image instead of the default type=button display. > > Hope this helps, > Bryan > ----- Original Message ----- > From: "Donald Marang" <donald.marang@xxxxxxxxx> > To: <jawsscripts@xxxxxxxxxxxxx> > Sent: Wednesday, September 23, 2009 12:13 AM > Subject: [jawsscripts] Re: The GetListOfFormFields function annd > Delimiters > > >> Thanks Brian, >> >> Hope you are feeling better! I hope the surgery was something they were >> fixing and things are better now. I have had more surgeries than I can >> count. Many were not intended to 'fix' things. >> >> Does that if a form field is not specified as a particular type, that it >> is >> a "text" edit field by default? Is it given a default size and Max >> length >> as well? On a similar note, if the INPUT element is specified as type = >> "image", can it be anything other than a class = "actionbutton" element? >> It >> is true on these badly written mobile pages, but can I generalize that >> statement? >> >> Don Marang >> >> >> ----- Original Message ----- >> From: "Bryan Garaventa" <bgaraventa11@xxxxxxxxxxxxxx> >> To: <jawsscripts@xxxxxxxxxxxxx> >> Sent: Wednesday, September 23, 2009 2:26 AM >> Subject: [jawsscripts] Re: The GetListOfFormFields function annd >> Delimiters >> >> >>> 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 >>> >> >> __________ >> 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