Closed Bug 271528 Opened 20 years ago Closed 20 years ago

JavaScript: set on 'onClick' event of a button a function using Confirm(msg) and event.returnValue, behavior not the one expected

Categories

(Core :: DOM: Core & HTML, defect)

1.7 Branch
x86
Windows 2000
defect
Not set
major

Tracking

()

RESOLVED INVALID

People

(Reporter: Chenry, Unassigned)

References

Details

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.0; rv:1.7.3) Gecko/20041001 Firefox/0.10.1
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.0; rv:1.7.3) Gecko/20041001 Firefox/0.10.1

On the 'onClick' event of a button, I have a javascript function as follow:
function myFunction(msg)
{
	if (confirm(msg))
		event.returnValue=true;
	else
		event.returnValue=false;
}

This function is there to allow the user to confirm or not the action attached
to the button such as 'You are about to delete this item. Are you sure?'
OK - do the action;
CANCEL - cancel the action.

On firefox, regadless of the confirmation button chosen (OK or CANCEL), it
behaves as if the OK button was used.

Reproducible: Always
Steps to Reproduce:
1.
2.
3.
Summary: JavaScript: set on 'onClick' event of a button a function using Confirm(msg) and event.returnValue, behavior not the on expected → JavaScript: set on 'onClick' event of a button a function using Confirm(msg) and event.returnValue, behavior not the one expected
please attach a testcase
Assignee: bryner → firefox
Component: Build Config → General
QA Contact: asa → firefox.general
Not sure if this person is describing the same problem I am having but it is
close enough..  

I have a form and in the form is several <button>s that have an onClick event. 
Some of the functions that the onClick events call simply contain
window.location.href="url here".  However, instead of just the function
processing and the user being forwarded to the next page, the next page gets
processed and the user is forwarded to the action of the form containing the
<button> as if it was an <input type=submit>.  I've had this happen with
functions containing an "if confirm(msg)" and without.

<script language="JavaScript">
	function edit(user_id) {
		window.document.getElementById("action").value="edit";
		window.document.getElementById("client_indiv_id").value=user_id;
		window.document.getElementById("list_form").submit();
	}

	function add(user_id) {
		if (confirm("Are you sure you want to add this person to your contact list?")) {
		
window.location.href="edit_local_to_client.php?action=insert&client_indiv_id="+user_id
		}
	}
</script>

<a href="edit_client.php?action=new">Create New</a>
<form action="edit_client.php" method="post" name="list_form" id="list_form">
	<input type="hidden" name="action" id="action" value="edit">
	<input type="hidden" name="client_indiv_id" id="client_indiv_id" value="">
	<table border="1" cellspacing="1" cellpadding="3">
		<tr>
			<th bgcolor="#cccccc">Edit or Add to Your Watch List</th>
			<th>Name</th>
			<th>Office</th>
			<th>Phone</th>
			<th>Mobile</th>
			<th>Email</th>
		</tr>
		<tr>
			<td bgcolor="#CCCCCC"><button onClick="edit(5)">Edit</button> <button
onClick="add(5)">Add</button></td>
			<td>John Doe</td>
			<td>FMSM&nbsp;</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td><a href="mailto:"></a>&nbsp;</td>
		</tr>
		<tr>
			<td bgcolor="#CCCCCC"><button onClick="edit(6)">Edit</button> <button
onClick="add(6)">Add</button></td>
			<td>Jane Doe</td>
			<td>FMSM&nbsp;</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td><a href="mailto:"></a>&nbsp;</td>
		</tr>
	</table>
</form>
Decreasing Severity form critcal to major (dose not cause crash or loss of data)
Moving to "Core" - "Dom" 
Assignee: firefox → general
Severity: critical → major
Component: General → DOM
Product: Firefox → Core
QA Contact: firefox.general → ian
Version: unspecified → 1.0 Branch
Component: DOM → DOM: Level 0
Hardware: Other → PC
Version: 1.0 Branch → 1.7 Branch
Chris, the default type of <button>, if no type is explicitly specified is
"submit".  IE gets this wrong.

Reporter, event.returnValue is an IE-ism that's not part of the DOM Events
standard.  It makes no sense outside IE's event processing model, where events
don't have return values at all (and instead can be prevented from propagating
by calling stopPropagation() or preventDefault() on them, depending on what the
goal is).

Marking invalid.
Status: UNCONFIRMED → RESOLVED
Closed: 20 years ago
Resolution: --- → INVALID
Depends on: 1452569
You need to log in before you can comment on or make changes to this bug.