หากมีการส่งแบบฟอร์ม แต่ไม่มีปุ่มเฉพาะเช่น
- โดยกด Enter
- ใช้
HTMLFormElement.submit()
ใน JS
เบราว์เซอร์ควรกำหนดอย่างไรว่าจะใช้ปุ่มใดในการส่งหลายปุ่มเพื่อใช้เป็นปุ่มกด
สิ่งนี้มีความสำคัญในสองระดับ:
- การเรียก
onclick
ตัวจัดการเหตุการณ์ที่แนบกับปุ่มส่ง - ข้อมูลที่ส่งกลับไปยังเว็บเซิร์ฟเวอร์
การทดลองของฉันจนถึงขณะนี้ได้แสดงให้เห็นว่า:
- เมื่อกดEnter, Firefox, Opera และ Safari จะใช้ปุ่มส่งครั้งแรกในแบบฟอร์ม
- เมื่อกดEnterIE จะใช้ปุ่มส่งครั้งแรกหรือไม่มีเลยขึ้นอยู่กับเงื่อนไขที่ฉันไม่สามารถหาได้
- เบราว์เซอร์ทั้งหมดนี้ไม่มีการใช้เลยสำหรับการส่ง JS
มาตรฐานพูดอะไร
ถ้ามันจะช่วยได้นี่คือรหัสทดสอบของฉัน (PHP นั้นเกี่ยวข้องกับวิธีการทดสอบของฉันเท่านั้นไม่ใช่เพื่อคำถามของฉันเอง)
<!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>