By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,223 Members | 1,371 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,223 IT Pros & Developers. It's quick & easy.

2 button form + which button was pressed

P: n/a
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
Share this Question
Share on Google+
1 Reply


P: n/a
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.