iT邦幫忙

1

請問如何調用 form input 的檢查機制,而不要 submit 跳轉頁面? 【已找到方式解決,附上解決方式】

js
  • 分享至 

  • xImage

請問如何調用 form input 的檢查機制,而不要 submit 跳轉頁面?

目前調用 js 的 submit 方法,瀏覽器會檢查 input 的條件像是 require, min, max 等
但是假如檢查都通過會 submit 跳轉頁面
想要不跳轉 URL 頁面,也能檢查,自動會 scroll 到有問題 input,並跳出瀏覽器自帶的提示詞


這是根據大家的回答,我寫的解決方式:

<!DOCTYPE html>
<html>
  <head>
    <title>Order Form</title>
  </head>
  <body>
    <form id="orderForm">
      <label for="quantity">Quantity (between 1 and 5):</label><br />
      <input
        type="number"
        id="quantity"
        name="quantity"
        min="1"
        max="5"
        required
      /><br />
      <label for="email">Email:</label><br />
      <input type="email" id="email" name="email" required /><br />
      <input type="submit" value="Submit" />
    </form>

    <script>
      document
        .getElementById('orderForm')
        .addEventListener('submit', function (event) {
          event.preventDefault();

          if (!this.checkValidity()) {
            event.stopPropagation();
          } else {
            //alert('Form is valid!');
          }

          this.reportValidity();
        });
    </script>
  </body>
</html>

froce iT邦大師 1 級 ‧ 2023-12-04 12:52:09 檢舉
https://www.w3school.com.cn/jsref/event_preventdefault.asp
小MIS iT邦研究生 1 級 ‧ 2023-12-04 14:47:04 檢舉
謝謝您!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

2
㊣浩瀚星空㊣
iT邦大神 1 級 ‧ 2023-12-04 13:52:06
最佳解答

一般來說,做法會有兩種。

一種是事件阻擋式:
這是直接去使用 submit 的事件中,利用 preventdefault 這個事件特性處理並中斷原本的 submit。
只是這在目前的瀏覽器中,有少部份瀏覽器並不支援。
所以很常還是會發送出去了。
大多數除了使用 preventdefault 之外,最好還是搭配一下 return false

另一種則是按鍵請求式:
也就是說,將按鍵不要定義為 submit 而是 buttion 。
先去跑JS判斷程式,確定完成後才去運行 submit 這個事件。
以JQUERY而簡單例子

if(判斷OK){
    $("form").submit()
}else{
    alert("資料有問題");
    return false;
}

這個方法比較不容易出問題。

最後是現在比較常見的方式。就是 ajax 的模式。
只是這會有點麻煩性,需要自行將 form data 自行組合後傳送。
但也不需要太擔心,無論是JQUERY、VUE或是其它前端框架
都已經有相關表單發送的應用。例 axios 之類的。

看更多先前的回應...收起先前的回應...
小MIS iT邦研究生 1 級 ‧ 2023-12-04 14:47:02 檢舉

星空大神,謝謝您!

厚厚 iT邦新手 1 級 ‧ 2023-12-04 14:51:51 檢舉

小MIS想要的就是星空大說的按鍵請求式嗎?

小MIS iT邦研究生 1 級 ‧ 2023-12-04 15:25:40 檢舉

我更新問題附上我最後找到的解決方式

archer9080 iT邦研究生 4 級 ‧ 2023-12-04 17:37:39 檢舉

為甚麼不用比較不容易出問題的方法@_@

1
souda
iT邦好手 1 級 ‧ 2023-12-04 13:22:12

建議您可參考Ajax搭配後端使用

小MIS iT邦研究生 1 級 ‧ 2023-12-04 14:46:57 檢舉

謝謝您!

我要發表回答

立即登入回答