Hi forum,

This will probably be an easy one but i have a situation where i have multiple PHP/HTML <SELECT> tags. So i hold their id and name in an array. When i go to call this enableBox JavaScript function and i try to call the selectorName[] using the getElementById command, i get a null reference. How can i make this work, using the getElementById command in JavaScript to access the selectorName[] in PHP/HTML so that i can enable and disable a box depending on whether other has been selected in the dropdown selector?


for($i=0; $i<some number; $i++) {
 <SELECT name="selectorName[]" id="selectorName[]" onChange="enableBox($i)">
  <option> some value </option>
 Please Specify Other: <input type=text name="other_name[]" id="other_name[]">


function enableBox(i) {
 var selector = document.getElementById(selectorName[i]);
 var otherBox = document.getElementById(other_name[i]);

6 Years
Discussion Span
Last Post by MackAttack30


What you really want is something called a "combo box" or "combobox" - Google it and you will get plenty of hits.

If you want to do your own thing then you could do something like this :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<title>Airshow :: Untitled</title>
<style type="text/css">

function enableBox(selectElement, otherBoxName) {
  var opt = selectElement[selectElement.selectedIndex];
  var otherBox = selectElement.form[otherBoxName];
  otherBox.disabled = (opt.value === "other") ? false : true;


<select name="xxxx" onChange="enableBox(this, 'yyyy')">
  <option value="">Select an option</option>
  <option value="x1">some value 1</option>
  <option value="x2">some value 2</option>
  <option value="x3">some value 3</option>
  <option value="other">Other</option>
<br />
Please Specify Other: <input type=text name="yyyy" value="Default other text" disabled="true" />


As you see, there's no need for arrays of names/ids. You just need to make sure that your php builds each select tag's onChange="enableBox(this, 'yyyy')" such that yyyy matches the name of its corresponding "other" text box.



Thanks Airshow,

But i ended up taking a different approach since i had to use the dropdown and text box in a more dynamic way. This allows me to check the value of each box later on in my code. Although my code my be a little more archaic, it does the job. Thanks for your help. See code below.

for($i=0; $i<some number; $i++) {
 <SELECT name="selectorName.$i" id="selectorName.$i" onChange="enableBox($i)">
  <option> some value </option>
 Please Specify Other: <input type=text name="other_name.$i" id="other_name.$i">
function enableBox(i) {
 var selector = document.getElementById(selectorName+i);
 var otherBox = document.getElementById(other_name+i);

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.