471,624 Members | 1,790 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,624 software developers and data experts.

2 button form + which button was pressed

I need a form with two buttons and ability to detect which button was
pressed. I got this code to work using a javascript global variable,
but I know there must be a better way using DOM. Any suggestions?
<html>
<head>
<script language="JavaScript" type="text/javascript">
// global var: which button I am pressing
var btnWhichButton;
//================================================== ======
// Check the input fields of the form
//================================================== ======
function chkMyForm() {
alert(btnWhichButton.value);
document.SubmitExpenseForm1.action="#";

// If Delete Record
if (btnWhichButton.value == "Delete Record")
{
document.SubmitExpenseForm1.DeleteRecordParm.value = 'Y' ;
window.document.SubmitExpenseForm1.submit();
return;
}

// Otherwise do validation
chkTextArea();
document.SubmitExpenseForm1.DeleteRecordParm.value = 'N' ;
window.document.SubmitExpenseForm1.submit();
}

//================================================== ======
// Check Text Area
//================================================== ======

function chkTextArea() {
// additional validation...
alert("Extra Validation done here")
}

</script>

</head>
<body>

<form class="noLF" name="SubmitExpenseForm1"
action="javascript:chkMyForm();" >
<input TYPE=HIDDEN NAME="ExpenseCode" value="AUTO">
<input TYPE=HIDDEN NAME="AcctPeriod" value="02">
<input TYPE=HIDDEN NAME="AcctYear" value = "2006">
<input type="hidden" name="DeleteRecordParm">

<!-- Submit Record Button -->
<input type="submit" NAME="Submit" value="Submit Record"
onclick="btnWhichButton=this">

<!-- Delete Record Button -->
<input type="submit" NAME="DeleteRecord" value="Delete Record"
onclick="btnWhichButton=this">

</form>

</BODY>
</HTML>

Apr 4 '06 #1
1 2137
Bi*************@yahoo.com said on 04/04/2006 1:23 PM AEST:
I need a form with two buttons and ability to detect which button was
pressed. I got this code to work using a javascript global variable,
but I know there must be a better way using DOM. Any suggestions?
Change your function to be a property of an object and have the button's
click event set a property of that object rather than of the window
(global) object.
<html>
<head>
<script language="JavaScript" type="text/javascript">
The language attribute is deprecated, remove it but keep type.

// global var: which button I am pressing
var btnWhichButton;
//================================================== ======
// Check the input fields of the form
//================================================== ======
function chkMyForm() {
Change to:
var chkMyForm = (function()
{
var btnWhichButton;

return {
check : function(){
alert(btnWhichButton.value);

// Do real checking based on value of btnWhichButton
// Essentially put body of your current function here

},
setWhichButton : function(btn){
btnWhichButton = btn;
}
};
})();
Then in the form:

<form action="" onsubmit="chkMyForm.check()" ... >

<input type="submit" name="SubmitRecord" value="Submit Record"
onclick="chkMyForm.setWhichButton(this)">

<input type="submit" name="DeleteRecord" value="Delete Record"
onclick="chkMyForm.setWhichButton(this)">

</form>

[...]
<form class="noLF" name="SubmitExpenseForm1"
action="javascript:chkMyForm();" >
Don't munge the action attribute, use an onsubmit attribute (see above).
[...]
<!-- Submit Record Button -->
<input type="submit" NAME="Submit" value="Submit Record"
onclick="btnWhichButton=this">


It's not good to use 'Submit' as a form control name, it can too easily
become 'submit' and mask the form's submit() method. It's not a problem
here, but good to avoid anyway.
[...]
--
Rob
Group FAQ: <URL:http://www.jibbering.com/FAQ>
Apr 4 '06 #2

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

8 posts views Thread by Syed Ali | last post: by
7 posts views Thread by Miguel Dias Moura | last post: by
19 posts views Thread by darrel | last post: by
10 posts views Thread by Tim Streater | last post: by
3 posts views Thread by Daniel | last post: by
1 post views Thread by XIAOLAOHU | last post: by
reply views Thread by leo001 | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.