Html Dom

prashantSum's Avatar
Contributor
hi,
using HTML DOM api can we know the number text boxes in the current page or number of text boxes in a <form> tag.

I have seen 'document.anchors.length', but what I want is number of text boxes is there something like this 'document.text.length'.

and further can we get text boxes of document or form as an array, so that I can manipulate those objects.
0
pradeep's Avatar, Join Date: Apr 2005
Team Leader
You can collect all the elements of a form into an Object, through which you can iterate to do whatever you want to.
The forms collection:

Code:
var oForm = document.forms[0]; 
  //holds the reference to the first form in the documents,  
 //you can access the other forms by changing 
 //the subscript
  
  var iLength = oForm.elements.length; //get the number of form elements
  
  //if you want to find the no. of text boxes in a form, here's how you do it.
  
  var oElements = oForm.elements; //get all the elements of the for to oElements
  var iTextCount = 0; //to store the no. of text boxes
  
  for(var i in oElements) //this is the JavaScript equivalent of Perl foreach
  {
     if(oElements[i].type == "text")
  	  iTextCount += 1;
  }
  
  //Now iTextCount stores the no. of text boxes in the form.
  //You can do a lot of things with forms in this way.

Hope this was helpful to you. Drop a query if you wanna know anything else.
0
prashantSum's Avatar
Contributor
thanks for the reply pradeep

actually my problem is : there are 3 text boxes(with tabindexes given in serial) for which I need to do validate (which should not be empty), so I have written a function to check whether the text box is empty or not, and I am calling this function on 'onblur' event of text box.
now the problem is if I press a tab in first text box the focus is going to 2nd text box, I don't know whether it going before executing the check function or after executing it, so first time it will show alert message and as the first box is empty I change the focus to first box, now as the focus is shifting from second text box to first text box the second text box onblur event is getting fired as it will be empty and like this it is going into infinite loop...

one more problem with the 'onblur' event is even if I am going to some other window that event is firing and executing the check function...

I am trying find a solution.........thinking so many logics.....

if u have please tell me..

one more thing how can we know whether a text box is in focus or not...
can we do something like this textbox.focus == true...

Last edited by prashantSum; 3Nov2005 at 11:25..
0
pradeep's Avatar, Join Date: Apr 2005
Team Leader
Hi,
I think you should validate the text boxes onSubmit, not onBlur.If your want to focus a field then this is how you go about it.

Code:
  function check(t) /* this is called onBlur */
   {
     if(t.value.length<1)
     {
       alert("You can't leave the field empty");
       t.focus();
     }
   }
   /* t is the reference to the source element, so when calling the function 
   call it like this onBlur="check(this);"
   */
Check out this thread http://www.go4expert.com/showthread.php?t=452 for more help on form validation with javascript.

http://spradeep.blogspot.com
0
prashantSum's Avatar
Contributor
yes generally we validate it only on submit,

but I have requirement to validate each text box when ever the user leaves the text box.
0
pradeep's Avatar, Join Date: Apr 2005
Team Leader
Did you try my code suggestion?
0
prashantSum's Avatar
Contributor
hi pradeep,
initially the contains the some syntax errors like some braces are missing.

I corrected and tried to run it, where in I have two text fields and one list box, but it's only validating for first field and not checking or validating 2nd text box and 3rd list box..

and more over this not what I want,

what I want is it should check immediately whenever the user leaves the text box.
0
pradeep's Avatar, Join Date: Apr 2005
Team Leader
Please copy-paste the form code into your reply with the Javascript.I'll check it.