4.12. Sự kiện Submit Form trong Javascript



1. Khai báo sự kiện submit bằng thẻ HTML form

Thẻ HTML form có sự kiện onsubmit, đây chính là nơi mà bạn gọi đến hàm xử lý trước khi hành động submit xảy ra.

1
2
3
<form method="post" action="" onsubmit="return validate()">
 
</form>

Lưu ý rằng hàm validate phải trả về kiểu boolean nhé:

  • Trả về true thì cho phép submit form
  • Trả về false thì không submit form

Bạn hãy thử tạo một input submit bên trong thẻ form, sau đó thiết lập code ở onsubmit là return false thì khi bạn click vào button submit đó sẽ không có hiệu ứng gì.

1
2
3
<form method="post" action="" onsubmit="return false">
    <input type="submit" value="Submit"/>
</form>

Nhưng khi bạn đổi sang return true thì sẽ có hiệu ứng ngay.

1
2
3
<form method="post" action="" onsubmit="return true">
    <input type="submit" value="Submit"/>
</form>

Tóm lại: Nội dung bên trong hàm validate không quan trọng, mà sự kiện này chỉ quan tâm đến giá trị return true / false của dòng return nằm bên trong sự kiện mà thôi.

2. Gọi đến một hàm Javascript khi submit

Có ba cách để gọi đến một hàm Javascript khi submit form như sau.

Cách 1: Sử dụng HTML như ở phần 1.

1
<form onsubmit="functionName">

Cách 2: Sử dụng phương thức addEventListener().

1
formObj.addEventListener("submit", functionName);

Cách 3: Sử dụng thuộc tính onsubmit của đối tượng form.

1
formObj.onsubmit = function(){functionName};

Khi sử dụng thuộc tính này thì nó sẽ thay thế đoạn code bên trong thuộc tính onsubmit của thẻ form, vì vậy những đoạn mã JS nằm bên trong thẻ form đó sẽ bị thay thể bởi function mà bạn đã gán.

Ví dụ: Mình sử dụng cách hai nhé.

1
2
3
4
5
6
7
8
<form method="post" action="" id="myform">
    <input type="submit" value="Submit"/>
</form>
<script>
    document.getElementById('myform').addEventListener('submit', function(){
        alert('Form Submited');
    });
</script>

3. Dùng Javascript để submit form

Ngoài cách sử dụng một thẻ input submit thì bạn cũng có thể sử dụng Javascript để thực hiện một hành động submit form.

Giả sử mình có thẻ input button như sau:

1
2
3
<form method="post" action="" id="myform">
    <input type="button" value="Button"/>
</form>

Nếu click vào button này thì sẽ không xảy ra sự kiện submit form, bởi đây là một button chứ khong phải button submit.

Bây giờ ta sẽ bổ đoạn code khi click vào button đó thì gọi đến phương thức submit() của form để kích hoạt sự kiện.

1
2
3
4
5
6
7
8
<form method="post" action="" id="myform">
    <input type="button" onclick="submitForm()" value="Button"/>
</form>
<script>
    function submitForm(){
        document.getElementById('myform').submit();
    }
</script>

Bạn hãy thử click vào button thì sẽ thấy xảy ra sự kiện submit form.



 

Nhận xét