vote up 0 vote down star

Hi,

I am try to write some validation script using javascript and prototype.

What I want to do is to loop through all the elements of a form and validate each answer. My code works, BUT the array of DOM elements is unsorted. I would like to sort the elements by their ID.

Here is the my code, which works fine if I comment-out elem.sort(zelementsort);

function zelementsort(a,b) {
    if (a.name > b.name)
    	return -1;
    else if (b.name > a.name)
    	return 1;
    else 
    	return 0;
}   

var elem = document.getElementById('myform').elements;
elem.sort(zelementsort);

for(var i = 0; i < elem.length; i++)
{
     alert("Name = " + elem[i].name);

}

I wonder if the problem might be that some of the elements do not have names. Anyone have another simpler way of sorting an array of DOM elements by their .name?

flag

1 Answer

vote up 3 vote down check

This should do it:

$$('#myForm *[name]').sortBy(function(el){ return el.name; });
link|flag
Thanks, this worked perfectly var elem = $$('#myForm *[name]').sortBy(function(el){ return el.name; }); – jeph perro Sep 16 at 17:50

Your Answer

Get an OpenID
or

Not the answer you're looking for? Browse other questions tagged or ask your own question.