Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Prioritize form field

0 views
Skip to first unread message

Frowning Freezer

unread,
Aug 28, 2008, 10:41:35 AM8/28/08
to
How can the function below be rewritten to prioritize form fields instead of
other objects with the same name?

For example I want getele("title") to retrieve the form field named "title"
instead of document.title - how do I get it to do that?

function getele(n, d){
//argument 'n' is the name of the object you want to get
//argument 'd' is the document object, it is not required
var p,i,x;
if (!d) {
d = document;
}
if ( (p = n.indexOf("?")) > 0 && parent.frames.length) {
d = parent.frames[n.substring(p+1)].document;
n = n.substring(0,p);
}
if ( !(x=d[n]) && d.all) {
x = d.all[n];
}
for (i=0; !x && i < d.forms.length; i++) {
x = d.forms[i][n];
}
for (i=0; !x && d.layers && i < d.layers.length; i++) {
x = getele(n, d.layers[i].document);
}
if (!x && d.getElementById) {
x = d.getElementById(n);
}
return x;
}


Regards,
Allan Jensen


Safalra (Stephen Morley)

unread,
Aug 30, 2008, 9:15:51 AM8/30/08
to


You can move the following if-block up in the function:

for (i=0; !x && i < d.forms.length; i++) {
x = d.forms[i][n];
}

This is, however, the wrong solution - rather than using this general
'getele' function which tries to find something somewhere in the document
with the appropriate element type/name attribute/id attribute, it would be
better to search only within the specific namespace required (form field
name, in this case).

--
Safalra (Stephen Morley)

A Colour Picker Widget For JavaScript:
http://www.safalra.com/web-design/javascript/widgets/colour-picker/

Thomas 'PointedEars' Lahn

unread,
Aug 31, 2008, 5:38:47 PM8/31/08
to
Safalra (Stephen Morley) wrote:
> On Thu, 28 Aug 2008 16:41:35 +0200, Frowning Freezer wrote:
>> How can the function below be rewritten to prioritize form fields instead of
>> other objects with the same name?
>>
>> For example I want getele("title") to retrieve the form field named "title"
>> instead of document.title - how do I get it to do that?
>>
>> function getele(n, d){
>> //argument 'n' is the name of the object you want to get
>> //argument 'd' is the document object, it is not required
>> var p,i,x;
>> [...]

>> for (i=0; !x && i < d.forms.length; i++) {
>> x = d.forms[i][n];
>> }
>> [...]

>> if (!x && d.getElementById) {
>> x = d.getElementById(n);
>> }
>> return x;
>> }
>
>
> You can move the following if-block up in the function:

Then the priority of it as compared to now would be *lower*, because
execution does not return after the assignment. So the *last* assignment
wins. So it should be moved down instead, but ...

> for (i=0; !x && i < d.forms.length; i++) {
> x = d.forms[i][n];
> }
>

> This is, however, the wrong solution [...]

... ACK, in double meaning.


PointedEars
--
Anyone who slaps a 'this page is best viewed with Browser X' label on
a Web page appears to be yearning for the bad old days, before the Web,
when you had very little chance of reading a document written on another
computer, another word processor, or another network. -- Tim Berners-Lee

0 new messages