HTMLFormElement: phương thức requestSubmit()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.

Phương thức requestSubmit() của HTMLFormElement yêu cầu biểu mẫu được gửi bằng một nút gửi cụ thể.

Cú pháp

js
requestSubmit()
requestSubmit(submitter)

Tham số

submitter Optional

Một submit button là thành viên của biểu mẫu.

Nếu submitter chỉ định các thuộc tính form*, chúng sẽ ghi đè hành vi gửi của biểu mẫu (ví dụ: formmethod="POST").

Nếu submitter có thuộc tính name hoặc là một <input type="image">, dữ liệu của nó sẽ được bao gồm trong việc gửi biểu mẫu (ví dụ: btnName=btnValue).

Nếu bạn bỏ qua tham số submitter, chính phần tử biểu mẫu sẽ được sử dụng làm nút gửi.

Giá trị trả về

Không có (undefined).

Ngoại lệ

TypeError

Được ném nếu submitter được chỉ định không phải là submit button.

NotFoundError DOMException

Được ném nếu submitter được chỉ định không phải là thành viên của biểu mẫu mà requestSubmit() được gọi. Nút gửi phải là hậu duệ của phần tử biểu mẫu hoặc phải có thuộc tính form trỏ đến biểu mẫu.

Ghi chú sử dụng

Câu hỏi rõ ràng là: Tại sao phương thức này tồn tại, trong khi chúng ta đã có phương thức submit() từ thuở sơ khai?

Câu trả lời rất đơn giản. submit() gửi biểu mẫu, nhưng đó là tất cả những gì nó làm. requestSubmit(), mặt khác, hoạt động như thể một nút gửi đã được nhấp. Nội dung của biểu mẫu được xác thực và biểu mẫu chỉ được gửi nếu xác thực thành công. Sau khi biểu mẫu đã được gửi, sự kiện submit được gửi ngược lại đối tượng biểu mẫu.

Ví dụ

Trong ví dụ dưới đây, biểu mẫu được gửi bằng cách cố gắng gửi yêu cầu bằng requestSubmit() nếu nó khả dụng. Nếu tìm thấy nút gửi có ID main-submit, nút đó sẽ được sử dụng để gửi biểu mẫu. Nếu không, biểu mẫu được gửi mà không có tham số submitter, do đó nó được gửi trực tiếp bởi chính biểu mẫu.

Mặt khác, nếu requestSubmit() không khả dụng, mã này sẽ chuyển sang gọi phương thức submit() của biểu mẫu.

js
let myForm = document.querySelector("form");
let submitButton = myForm.querySelector("#main-submit");

if (myForm.requestSubmit) {
  if (submitButton) {
    myForm.requestSubmit(submitButton);
  } else {
    myForm.requestSubmit();
  }
} else {
  myForm.submit();
}

Đặc điểm kỹ thuật

Thông số kỹ thuật
HTML
# dom-form-requestsubmit-dev

Tương thích trình duyệt