ปิดใช้งานการส่งแบบฟอร์มโดยอัตโนมัติเมื่อคลิกปุ่ม


180

ฉันมีรูปแบบ HTML ที่ฉันใช้ปุ่มหลายปุ่ม ปัญหาคือไม่ว่าฉันจะคลิกที่ปุ่มใดแบบฟอร์มจะถูกส่งถึงแม้ว่าปุ่มจะไม่ใช่ประเภท "ส่ง" เช่นปุ่มเช่น: <button>Click to do something</button>ส่งผลให้มีการส่งแบบฟอร์ม

มันค่อนข้างเจ็บปวดที่ต้องทำe.preventDefault()กับปุ่มเหล่านี้แต่ละปุ่ม

ฉันใช้ jQuery และ jQuery UI และเว็บไซต์อยู่ใน HTML5

มีวิธีปิดใช้งานพฤติกรรมอัตโนมัตินี้หรือไม่

คำตอบ:


460

ปุ่มเหมือน<button>Click to do something</button> มีส่งปุ่ม

ตั้งค่าtype="button"ให้เปลี่ยน type="submit"เป็นค่าเริ่มต้น (ตามที่ระบุโดยการแนะนำ HTML )


24
การนอนหลับของฉันสูญเสียวันไปโดยปริยายการแก้ไขโค้ดของฉันเพราะฉันไม่รู้คุณสมบัติง่ายๆ
palerdot

4
สะท้อนความคิดของ palerdot ดีใจที่ฉันพบบันทึกนี้หลังจากการค้นหาโดย Google อย่างรวดเร็วและไม่ฆ่าชั่วโมง รู้มากขอบคุณมาก
brooklynsweb

2
@NiketJoshi - คำสั่งนั้นดูเหมือนจะไม่เกี่ยวข้องกับคำถามที่คำตอบนี้ หากคุณมีคำถามใหม่แล้วขอแต่ให้แน่ใจว่าคุณให้คำสั่งปัญหาที่ชัดเจนและตัวอย่างที่สามารถทำซ้ำได้น้อยที่สุด
Quentin

19

คุณสามารถลองใช้return false (return false overrides พฤติกรรมเริ่มต้นในทุกองค์ประกอบ DOM) เช่นนั้น:

myform.onsubmit = function ()
{ 
  // do what you want
  return false
}

จากนั้นส่งแบบฟอร์มของคุณโดยใช้ myform.submit ()

หรืออีกทางหนึ่ง:

mybutton.onclick = function () 
{
   // do what you want
   return false
}

นอกจากนี้หากคุณใช้type="button"แบบฟอร์มของคุณจะไม่ถูกส่ง


8

<button>ที่จริงแล้วคือปุ่มส่งพวกเขาไม่มีฟังก์ชั่นหลักอื่น ๆ คุณจะต้องตั้งค่าปุ่มชนิด
แต่ถ้าคุณผูกตัวจัดการเหตุการณ์เหมือนด้านล่างคุณกำหนดเป้าหมายทุกปุ่มและไม่ต้องทำด้วยตนเองสำหรับแต่ละปุ่ม!

$('form button').on("click",function(e){
    e.preventDefault();
});

e.preventDefault();มัน
hlcs

0

หากคุณต้องการที่จะเพิ่มลงในแอตทริบิวต์ input โดยตรงให้ใช้สิ่งนี้

 onclick="return false;" 

<input id = "btnPlay" type="button" onclick="return false;" value="play" /> 

สิ่งนี้จะป้องกันพฤติกรรมการส่งแบบฟอร์ม


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.