Jika suatu formulir dikirimkan tetapi tidak dengan tombol tertentu, seperti
- dengan menekan Enter
- gunakan
HTMLFormElement.submit()
di JS
Bagaimana cara browser menentukan tombol pengiriman mana yang harus digunakan, seperti yang ditekan?
Ini signifikan pada dua tingkatan:
- memanggil
onclick
pengendali acara yang dilampirkan pada tombol kirim - data dikirim kembali ke server web
Eksperimen saya sejauh ini menunjukkan bahwa:
- saat menekan Enter, Firefox, Opera dan Safari menggunakan tombol kirim pertama dalam formulir
- saat menekan Enter, IE menggunakan tombol kirim pertama atau tidak sama sekali tergantung pada kondisi yang saya belum bisa mengetahuinya
- semua browser ini tidak menggunakan sama sekali untuk pengiriman JS
Apa yang dikatakan standar?
Jika itu akan membantu, ini kode pengujian saya (PHP hanya relevan untuk metode pengujian saya, bukan untuk pertanyaan saya sendiri)
<!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>