Nếu một hình thức được gửi nhưng không phải bởi bất kỳ nút cụ thể, chẳng hạn như
- bằng cách nhấn Enter
- sử dụng
HTMLFormElement.submit()
trong JS
Làm thế nào là một trình duyệt được xác định để xác định nút nào trong số nhiều nút gửi, nếu có, để sử dụng như một nút được nhấn?
Điều này có ý nghĩa trên hai cấp độ:
- gọi một
onclick
trình xử lý sự kiện gắn liền với nút gửi - dữ liệu được gửi trở lại máy chủ web
Các thí nghiệm của tôi cho đến nay đã chỉ ra rằng:
- khi nhấn Enter, Firefox, Opera và Safari sử dụng nút gửi đầu tiên trong biểu mẫu
- khi nhấn Enter, IE sử dụng nút gửi đầu tiên hoặc không có gì cả tùy thuộc vào điều kiện tôi chưa thể tìm ra
- tất cả các trình duyệt này hoàn toàn không sử dụng cho một lần gửi JS
Tiêu chuẩn nói gì?
Nếu nó có ích, thì đây là mã kiểm tra của tôi (PHP chỉ liên quan đến phương pháp kiểm tra của tôi, không liên quan đến câu hỏi của tôi)
<!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>