how to force click event on disabled submit button

J

JSjones

Hi all,

I'm new to these boards and my javascript experience is fairly limited
and basic so please bear with me. Anyway, on to the question and some
background. I'm developing using ColdFusion 4.5 and a good deal of the
page processing depends on whether or not a control is defined. To
prevent users from clicking on a submit button more than once or
clicking on another submit button before the page has finished
processing I have decided to use javascript to disable all of the
submit buttons on the page. However, this is preventing submission of
the form. When I try forcing the submit in the function, the
processing that should occur from clicking the submit button is
ignored and the submit button is not defined. Here is the code I am
using the commented code is different things I have tried:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
<script language="JavaScript">
function fxnDisableBtn(foo)
{
//alert(foo.type + ", " + foo.name + ", " + foo.value);
//document.frm1.foo.click();
//document.frm1.submit();
document.frm1.btnSave.disabled = true;
document.frm1.btnGoBack.disabled = true;
document.frm1.btnReturn.disabled = true;
document.frm1.btnForward.disabled = true;
//document.frm1.submit();
//document.frm1.foo.click();
switch(foo.name){
case "btnSave":
//alert(foo.type + ", " + foo.name);
//document.frm1.btnSave.click();
foo.click();
break;
//document.frm1.btnSave.click();
case "btnGoBack":
//alert(foo.type + ", " + foo.name);
document.frm1.btnGoBack.click();
//foo.click();
break;
case "btnReturn":
//alert(foo.type + ", " + foo.name);
//document.frm1.btnReturn.click();
break;
case "btnForward":
//alert(foo.type + ", " + foo.name);
//document.frm1.btnForward.click();
break;
}
alert(foo.type + ", " + foo.name + ", " + foo.value + ", " +
foo.disabled + ", " + foo.click()); //debugging and checking foo
}
</script>
</head>

<body>
<form name="frm1" action="#Application.RootPath#/master.cfm?"
method="post"></form>

<input type=submit name="btnSave" value="Save (Does Not Forward)"
onclick="fxnDisableBtn(btnSave);">
<br><br>
<input type=submit name="btnGoBack" value=" <- Back "
onclick="fxnDisableBtn(btnGoBack);">&nbsp;&nbsp;&nbsp;

<input type=submit name="btnReturn" value="Return"
onclick="fxnDisableBtn(btnReturn);">&nbsp;&nbsp;&nbsp;

<input type=submit name="btnForward" value="Forward"
onclick="fxnDisableBtn(btnForward);">
<br><br>

</body>
</html>
 
M

Michael Winter

Is there no way to make the form submit after the button is disabled,
I'm having exactly the same problem?

No, not by clicking the button. Once disabled, it is just that: disabled.
The button stops receiving events and can't perform any actions, such as
submission.

Mike
 
T

Thomas 'PointedEars' Lahn

JSjones said:
I'm new to these boards

This is no (bulletin/message) board. You have posted to Usenet,
via the Google Groups web interface. That interface has its flaws,
so you better use NetNews client software (a newsreader) instead.
I recommend not to use Outlook Express, it is mindboggingly buggy.
I'm developing using ColdFusion 4.5 and a good deal of the
page processing depends on whether or not a control is defined. To
prevent users from clicking on a submit button more than once or
clicking on another submit button before the page has finished
processing I have decided to use javascript to disable all of the
submit buttons on the page.

This is the wrong approach because:
[...] this is preventing submission of the form

You need to revise the concept of your server-side application. It
must not accept input twice. Sessions are a good way to accomplish that.
<script language="JavaScript">

function fxnDisableBtn(foo)
{
//alert(foo.type + ", " + foo.name + ", " + foo.value);
//document.frm1.foo.click();

No. If you have a method that accesses forms, pass a
reference the HTMLFormElement object instead ("this.form"
in an event handler of a form control, "this" in an event
handler of the "form" element). This avoids code like
//document.frm1.submit();
document.frm1.btnSave.disabled = true;
document.frm1.btnGoBack.disabled = true;
document.frm1.btnReturn.disabled = true;
document.frm1.btnForward.disabled = true;
//document.frm1.submit();
//document.frm1.foo.click();

and you could use

... foo.elements['btnSave'] ...

aso. instead. And remember not to make operation dependent on
client-side script support for it can be disabled or not even
present.


HTH

PointedEars
 

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,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top