?
Solved

Default Value of select

Posted on 2004-04-04
6
Medium Priority
?
1,859 Views
Last Modified: 2008-03-10
I have a validation to check whether the value in the form is changed. I have a problem when the component is a select. I have written a javascript but it is not working in some cases.
My funciton is:

function isChanged() {
 for(i=0;i<document.forms[0].elements.length;i++) {
    if(document.forms[0].elements[i].type=="select-one) {
        for(j=0;j<document.forms[0].elements[i].options.length;j++) {
            if(document.forms[0].elements[i].options[j].selected !=
                        document.forms[0].elements[i].options[j].defaultSelected) {
                return true;
          }
        }
    }
 }
}

In my case i dont have a default value selected in the combo box. I am using the html:select.
0
Comment
Question by:kanuaravind
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
6 Comments
 
LVL 7

Expert Comment

by:gam3r_3xtr3m3
ID: 10751969
maybe...:

function isChanged() {
 for(i=0;i<document.forms[0].elements.length;i++) {
    if(document.forms[0].elements[i].type=="select") {
        for(j=0;j<document.forms[0].elements[i].options.length;j++) {
            if(document.forms[0].elements[i].options[j].selected !=
                      document.forms[0].elements[i].options[j].defaultSelected) {
                return true;
         }
        }
    }
 }
}

gam3r
0
 
LVL 12

Expert Comment

by:lil_puffball
ID: 10752188
If you use defaultSelected, you must have

<option selected>

If you don't, it won't work.
You can assume that the default selected is 0, though, since if you don't specify it, the browser will automatically make it option 0. So you can use this code:

function isChanged() {
var selIndex=0;
 for(i=0;i<document.forms[0].elements.length;i++) {
    if(document.forms[0].elements[i].type=="select-one") {
        for(j=0;j<document.forms[0].elements[i].options.length;j++) {
            if(document.forms[0].elements[i].options[j].defaultSelected){selIndex=j;}
        }
        if(document.forms[0].elements[i].options.selectedIndex!=selIndex){return true;}
    }
 }
return false;
}
0
 
LVL 15

Expert Comment

by:VincentPuglia
ID: 10752198
Hi,

  If you are using a select, the default value is usually option[0].  So, you should only need to check the selectedIndex:

function isChanged()
{
   for(i=0;i<document.forms[0].elements.length;i++)
  {
      if(document.forms[0].elements[i].type=="select-one)
     {
         var selObj = document.forms[0].elements[i];
         if (! selObj.options[0].selected)
             return true;
      }
  }
}

Vinny
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 7

Accepted Solution

by:
brgivens earned 450 total points
ID: 10752851
Vinny's right, you only need to check the selectedIndex.  His code won't work though - try this:

function isChanged() {
 var i,o;
 for(i=0;i<document.forms[0].elements.length;i++) if((o=document.forms[0].elements[i]).type=="select-one" && !o.options[o.selectedIndex].defaultSelected) return true;
 return false;
}
0
 
LVL 15

Expert Comment

by:VincentPuglia
ID: 10753084
Hi brgivens,

  I admit I didn't test what I had written until your last post.  It works for me (as long as the quote is closed -- 'select-one')

<script type='text/javascript'>
function isChanged()
{
   for(i=0;i<document.forms[0].elements.length;i++)
   {
      if(document.forms[0].elements[i].type=="select-one")
     {

alert(selObj.options[0].selected)

         var selObj = document.forms[0].elements[i];
         if (! selObj.options[0].selected)
             return (true);
      }
  }
}
//-->
</script>
</head>
<body>
<form onsubmit='isChanged()'>
<select>
<option >select</option>
<option >select</option>
<option >select</option>
</select>
<input type="submit">
</form>

The presumption I am making is that the first option is the default.

Vinny
0
 
LVL 7

Expert Comment

by:brgivens
ID: 10849284
Thanks for the points!  Why the B?
0

Featured Post

Optimize your web performance

What's in the eBook?
- Full list of reasons for poor performance
- Ultimate measures to speed things up
- Primary web monitoring types
- KPIs you should be monitoring in order to increase your ROI

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction HTML checkboxes provide the perfect way for a web developer to receive client input when the client's options might be none, one or many.  But the PHP code for processing the checkboxes can be confusing at first.  What if a checkbox is…
This article discusses the difference between strict equality operator and equality operator in JavaScript. The Need: Because JavaScript performs an implicit type conversion when performing comparisons, we have to take this into account when wri…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…
Suggested Courses

752 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question