cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk mengelakkan penyerahan borang?

<p>Saya mempunyai borang dengan butang hantar di suatu tempat di dalamnya. </p> <p>Walau bagaimanapun, saya ingin "menangkap" acara komit dan menghalangnya daripada berlaku. </p> <p>Adakah terdapat cara untuk melakukan ini? </p> <p>Saya tidak boleh mengubah suai butang serah kerana ia adalah sebahagian daripada kawalan tersuai. </p>
P粉545218185P粉545218185495 hari yang lalu538

membalas semua(2)saya akan balas

  • P粉463418483

    P粉4634184832023-08-22 12:35:21

    Anda boleh menggunakan acara sebaris seperti inionsubmit

    <form onsubmit="alert('停止提交'); return false;">

    atau

    <script>
       function toSubmit(){
          alert('我不会提交');
          return false;
       }
    </script>
    
    <form onsubmit="return toSubmit();">

    Contoh

    Kini, apabila membangunkan projek besar, ini mungkin bukan idea yang baik. Anda mungkin perlu menggunakan pendengar acara.

    Sila baca lebih lanjut tentang acara sebaris lwn pendengar acara (tambahEventListener dan attachEvent IE) di sini . Kerana saya tidak dapat menjelaskannya lebih baik daripada Chris Baker.

    balas
    0
  • P粉399585024

    P粉3995850242023-08-22 11:25:35

    Tidak seperti jawapan lain, mengembalikan falsehanya merupakan bahagian jawapan. Pertimbangkan kes di mana ralat JS berlaku sebelum pernyataan pulangan...

    html

    <form onsubmit="return mySubmitFunction(event)">
      ...
    </form>

    skrip

    function mySubmitFunction()
    {
      someBug()
      return false;
    }

    Kembali ke sinifalse不会被执行,表单将以任何方式提交。您还应该调用preventDefault tidak akan dilaksanakan dan borang akan diserahkan dalam apa jua cara. Anda juga harus memanggil preventDefault untuk menghalang tindakan lalai penyerahan borang Ajax.

    function mySubmitFunction(e) {
      e.preventDefault();
      someBug();
      return false;
    }

    Dalam kes ini, borang tidak akan dihantar walaupun terdapat ralat!

    Sebagai alternatif, anda boleh menggunakan try...catch blok.

    function mySubmit(e) { 
      e.preventDefault(); 
      try {
       someBug();
      } catch (e) {
       throw new Error(e.message);
      }
      return false;
    }

    balas
    0
  • Batalbalas