Connecting Tech Pros Worldwide Help | Site Map

Choosing visible form elements

Anna
Guest
 
Posts: n/a
#1: Jul 20 '05
Hi all.
I have a javascript function that loops throught all text boxes inside
a form:

var elems = document.formName.elements;
for(i = 0; i < elems.length; i++) {
if(elems[i].type && elems[i].type.toLowerCase()=="text")
do something
}

This way it goes through every single text box in the form.
But in my form structure, some form elements (text boxes included)
are inside invisible divs.
And what I actually want to do, is to check only the text boxes
that are not inside invisible divs.
Is there a way to say in javascript something like:
choose only textbox that is not inside element (div) whose
className='invisible'?

Or maybe I should try a different approach, instead looping through
all form elements?

Thank you very much for your help.
Sorry if I'm asking stupid questions, I'm not very good with
javascript yet.

Anna
Vjekoslav Begovic
Guest
 
Posts: n/a
#2: Jul 20 '05

re: Choosing visible form elements


"Anna" <anna@ubaccess.com> wrote:
[color=blue]
> And what I actually want to do, is to check only the text boxes
> that are not inside invisible divs.
> Is there a way to say in javascript something like:
> choose only textbox that is not inside element (div) whose
> className='invisible'?[/color]

function contains(parent,child){
if (parent==child) return true;
var t = child;
if (t && t.parentNode){
if (t.parentNode == parent)
return true;
else
return contains(parent,t.parentNode)
}
return false;
}

var myForm=document.getElementById("your_form_id");
var invisibleDivs=new Array();
var divs=myForm.getElementsByTagName("DIV");
for (var i=0; i<divs.length; i++){
if (divs.item(i).className == "invisible")){
invisibleDivs.push(divs.item(i));
}
}
var textBoxes = myForm.getElementsByTagName("INPUT");
for (var i=0; i<textBoxes.length; i++){
var currentTxtBox = textBoxes.item(i);
if (currentTxtBox.type == "text"){
var good=true;
for (var j=0;j<invisibleDivs.length;j++){
if (contains(invisibleDivs.item(j),currentTextBox)){
good=false;break;
}
}
if (good){
//your code here
}
}
}


Not tested.
Good luck,

Vjekoslav


Closed Thread


Similar JavaScript / Ajax / DHTML bytes