Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Javascript > "object doesn't support this property or method" error

Reply
Thread Tools

"object doesn't support this property or method" error

 
 
SmittyBroham
Guest
Posts: n/a
 
      01-07-2005
Hello,

I have a function that loops through 2 select lists and records the
values of any hi-lighted options a user would have selected. It then
sets 2 corresponding "hidden" form elements to the values and submits
the form data to the server.

I was error free until I added the following line:

document.myform.submit();

This produces the "object doesn't support this property or method"
error. The troubleshooting steps I have taken are:

1) Confirmed the existance of <form> and </form> tags.
2) Confirmed there is no typo in the form name.
3) Tried changing the form name from "bhd2pib_form" to just "myform".
4) Commented out the suspected offending line of code and I am again
error free, uncomment it, the error comes back.
5) Added a normal "submit" button to test the action and post
attributes of the <form> tag and that works fine.

I am having a hard time believing a simple method call such as
document.myform.submit(); is so difficult to figure out! Please, any
help would be greatly appreciated. The function is pasted below in
it's entirety:

<script type="text/javascript">
function setValues()
{
var bhd_list = document.myform.bhd_headings;
var pib_list = document.myform.pib_headings;

var bhd_values = ''; // String of selected base_heading ids to
map
var pib_value;

for ( i=1; i<bhd_list.options.length; i++ ) {
if ( bhd_list.options[i].selected ) {
if ( !bhd_values ) {
bhd_values = bhd_values +
bhd_list.options[i].value;
}
else {
bhd_values = bhd_values + ':' +
bhd_list.options[i].value;
}
}
}

for ( j=1; j<pib_list.options.length; j++ ) {
if ( pib_list.options[j].selected ) {
pib_value = pib_list.options[j].value;
break;
}
}

if ( !bhd_values ) {
alert( "You have to select at least 1 base heading to
map or else this page doesn't make a lot of sense to have." );
}

if ( !pib_value ) {
alert( "You have to select a PIB heading to map to" );
}

// Set values of hidden fields
document.myform.bhd_values.value = bhd_values;
document.myform.pib_value.value = pib_value;

document.myform.submit(); //this line causes the error
}
</script>

 
Reply With Quote
 
 
 
 
RobG
Guest
Posts: n/a
 
      01-07-2005
SmittyBroham wrote:
> Hello,
>
> I have a function that loops through 2 select lists and records the
> values of any hi-lighted options a user would have selected. It then
> sets 2 corresponding "hidden" form elements to the values and submits
> the form data to the server.
>
> I was error free until I added the following line:
>
> document.myform.submit();


I would add your function to the form "onsubmit" event and return
false if your validation fails. Then your submit stays as a
plain submit button.

[...]
> var bhd_list = document.myform.bhd_headings;
> var pib_list = document.myform.pib_headings;


If you pass a reference to the table from the event, you don't
need all those document.myform calls:

<form ... onsubmit="return setValues(this);" ... >

> for ( i=1; i<bhd_list.options.length; i++ ) {


This can be optimised a little as:

var len=bhd_list.options.length;
for (var i=0; i<len; i++) {

Use var to keep i local. Getting the length property once is
more efficient and will make a small difference if you have many
options.

> if ( bhd_list.options[i].selected ) {
> if ( !bhd_values ) {
> bhd_values = bhd_values +
> bhd_list.options[i].value;
> }
> else {
> bhd_values = bhd_values + ':' +
> bhd_list.options[i].value;


This too can be a little more concise:

for ( i=1; i<bhd_list.options.length; i++ ) {
if ( bhd_list.options[i].selected ) {
if ( !bhd_values == '') bhd_values += ':';
bhd_values += bhd_list.options[i].value;
}
}

[...]
> if ( !bhd_values ) {
> alert( "You have to select at least 1 base heading to
> map or else this page doesn't make a lot of sense to have." );
> }


return false here to cancel the submit:

map or else this page doesn't make a lot of sense to have." );
return false
}

> if ( !pib_value ) {
> alert( "You have to select a PIB heading to map to" );
> }


And do the same here


> // Set values of hidden fields
> document.myform.bhd_values.value = bhd_values;
> document.myform.pib_value.value = pib_value;


Use "theForm" reference here to get rid of document...

theForm.bhd_values.value = bhd_values;
theForm.pib_value.value = pib_value;

>
> document.myform.submit(); //this line causes the error


This line is no longer needed. The trivial line to add is:

return true;

But that should not be required (but test in lots of browsers
first).

The full script is below, tested in IE and Firefox.

<script type="text/javascript">
function setValues(theForm) {
var bhd_list = theForm.bhd_headings,
pib_list = theForm.pib_headings,
bhd_values = '',
pib_value = '';

var len = bhd_list.options.length;
for (var i=1; i<len; i++ ) {
if ( bhd_list.options[i].selected ) {
if ( !bhd_values == '') bhd_values += ':';
bhd_values += bhd_list.options[i].value;
}
}

var len = pib_list.options.length
for (var j=1; j<len; j++ ) {
if ( pib_list.options[j].selected ) {
pib_value = pib_list.options[j].value;
break;
}
}

if ( bhd_values == '' ) {
alert("You have to select at least 1 base"
+ " heading to map or else this page"
+ " doesn't make a lot of sense to have.");
return false;
}

if ( pib_value == '' ) {
alert("You have to select a PIB heading"
+ " to map to");
return false;
}

// Set values of hidden fields
theForm.bhd_values.value = bhd_values;
theForm.pib_value.value = pib_value;
}
</script>

--
Rob
 
Reply With Quote
 
 
 
 
SmittyBroham
Guest
Posts: n/a
 
      01-07-2005
Hi Rob,

Using the form's onSubmit action did indeed work. Thanks for your
detailed response!

-Mark

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Javascript error headache: object doesn't support this property or method news.onetel.net.uk Javascript 3 08-09-2004 09:13 PM
runtime error: object doesn't support this property or method Matt Javascript 3 05-27-2004 03:04 PM
Object Does not support this property or Method error Roberta McGervey ASP General 7 01-27-2004 04:47 PM
Error: Object doesn't support this property or method Roman ASP .Net 0 01-04-2004 04:50 PM
IE Frameset OnLoad "Object doesn't support this property or method" error mygoogleac Javascript 0 10-02-2003 11:24 AM



Advertisments