select listbox that does a form submit

J

Jason Novotny

Hi,

I'm trying to create a listbox using <select> HTML tags that can do
a form submit when an option in the list is selected. So far this works,


function MySelectSubmit() {
document.myform.submit();
}

with HTML:

<form name="myform" method="post" action="myselect">

<select name='myselect' size='1' onChange='MySelectSubmit()'>
<option value='hi' selected='selected' >Hello</option>
<option value='bye'>Goodbye</option>
</select>

</form>

Now my question is how can I make the javascript method general enough
so I can pass in any form so that it does not have to refere to "myform"
in the body. I tried the following but it doesn't work:

function MySelectSeubmit( aform ) {
document.aform.submit();
}

Thanks, Jason
 
M

Michael Winter

I'm trying to create a listbox using <select> HTML tags that can do
a form submit when an option in the list is selected. So far this works,

I don't quite know the wisdom of that; it depends on the content of the
SELECT box and how clear it is that the selection made is final. What if
the user makes a mistake?
Now my question is how can I make the javascript method general enough
so I can pass in any form so that it does not have to refere to "myform"
in the body.

It depends what you are passing to the method. If it is a reference to the
form object, you can do:

function mySubmit( myForm ) {
myForm.submit();
}

If you are passing the name of the form, you'll need to do:

function mySubmit( myForm ) {
document.forms[ myForm ].submit();
}

Mike
 
L

Lee

Jason Novotny said:
Hi,

I'm trying to create a listbox using <select> HTML tags that can do
a form submit when an option in the list is selected. So far this works,


function MySelectSubmit() {
document.myform.submit();
}

with HTML:

<form name="myform" method="post" action="myselect">

<select name='myselect' size='1' onChange='MySelectSubmit()'>
<option value='hi' selected='selected' >Hello</option>
<option value='bye'>Goodbye</option>
</select>

</form>

Now my question is how can I make the javascript method general enough
so I can pass in any form so that it does not have to refere to "myform"
in the body. I tried the following but it doesn't work:

function MySelectSeubmit( aform ) {
document.aform.submit();
}

Only the first component of a dot-notation identifier may be a
variable. If aform is a variable containing the name of the
form, you can use:

document.forms[aform].submit();

but it would be even simpler to pass a reference to the form,
instead of its name. You would pass it with:

onChange='MySelectSubmit(this.form)'

Note that "this.form" is exactly what you would use. Don't
replace any part of it with your own names. It's a built-in
reference to the form that contains the form element that the
event handler belongs to.

Then your function would look like:

function MySelectSubmit( aform ) {
aform.submit();
}

Since "aform" is now a reference directly to the form, you
don't need to qualify it with the document reference.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,770
Messages
2,569,583
Members
45,074
Latest member
StanleyFra

Latest Threads

Top