Si un formulaire est soumis mais pas par un bouton spécifique, tel que
- en appuyant Enter
- utilisation
HTMLFormElement.submit()
dans JS
comment un navigateur est-il censé déterminer lequel des multiples boutons d'envoi, le cas échéant, utiliser comme celui sur lequel vous appuyez?
Ceci est significatif à deux niveaux:
- appeler un
onclick
gestionnaire d'événements attaché à un bouton d'envoi - les données renvoyées au serveur web
Mes expériences jusqu'à présent ont montré que:
- en appuyant sur Enter, Firefox, Opera et Safari utilisent le premier bouton d'envoi du formulaire
- en appuyant sur Enter, IE utilise le premier bouton d'envoi ou aucun en fonction des conditions que je n'ai pas pu comprendre
- tous ces navigateurs n'en utilisent aucun pour une soumission JS
Que dit la norme?
Si cela peut aider, voici mon code de test (le PHP ne concerne que ma méthode de test, pas ma question elle-même)
<!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>