Como é determinado o botão de envio padrão em um formulário HTML?

Se um formulário for enviado, mas não por um botão específico, como

pressionandoEntrausingHTMLFormElement.submit() em JS

como um navegador deve determinar qual dos vários botões de envio, se houver, usar como o pressionado?

Isto é significativo em dois níveis:

calling anonclick manipulador de eventos anexado a um botão de envio os dados enviados de volta ao servidor web

Meus experimentos até agora mostraram que:

quando pressionarEntra, Firefox, Opera e Safari usam o primeiro botão de envio no formulárioquando pressionarEntra, O IE usa o primeiro botão de envio ou nenhum, dependendo das condições que não consegui descobrir todos esses navegadores não usam nenhum para o envio de JS

O que diz o padrão?

Se isso ajudar, aqui está o meu código de teste (o PHP é relevante apenas para o meu método de teste, não para a minha própria pergunt

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
</head>

<body>

<h1>Get</h1>
<dl>
<?php foreach ($_GET as $k => $v) echo "<dt>$k</dt><dd>$v</dd>"; ?>
</dl>

<h1>Post</h1>
<dl>
<?php foreach ($_POST as $k => $v) echo "<dt>$k</dt><dd>$v</dd>"; ?>
</dl>

<form name="theForm" method="<?php echo isset($_GET['method']) ? $_GET['method'] : 'get'; ?>" action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
    <input type="text" name="method" />
    <input type="submit" name="action" value="Button 1" onclick="alert('Button 1'); return true" />
    <input type="text" name="stuff" />
    <input type="submit" name="action" value="Button 2" onclick="alert('Button 2'); return true" />
    <input type="button" value="submit" onclick="document.theForm.submit();" />
</form>

</body></html>

questionAnswers(28)

yourAnswerToTheQuestion