Solved

Default Value of select

Posted on 2004-04-04
6
1,837 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
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
Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
LVL 7

Accepted Solution

by:
brgivens earned 150 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

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Today I would like to talk about localizing (Internationalization) JavaScript applications. Introduction When creating an application that is going to be used by many people around the globe, it is important to remember that not everyone speak…
Boost your ability to deliver ambitious and competitive web apps by choosing the right JavaScript framework to best suit your project’s needs.
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…

860 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