2012-03-28 24 views
6

Đây là một câu hỏi rất thô sơ, nhưng tôi chắc chắn có ai đó ở đó biết tại sao. Trong HTML, khi tôi tự tạo một phần tử nút, và không cung cấp cho nó và onclick và không có jQuery .click() nút này sẽ không làm gì cả. Hoàn hảo. Nhưng khi tôi làm điều này và nút bên trong một phần tử <form>, nó cố gắng gửi dữ liệu GET của tất cả các phần tử biểu mẫu đến địa chỉ gốc của trang web của tôi? Tại sao nó làm điều đó? Tôi đã không làm cho nó một nút gửi hoặc thậm chí xác định method hoặc action trên biểu mẫu đó ??HTML tại sao các nút trong biểu mẫu gửi dữ liệu?

Cảm ơn bạn đã thông tin trước!

** EDIT **

Đây là những gì tôi đã làm để khắc phục sự cố. Đối với các nút bên trong số <form>, hãy sử dụng:

<button type="button"></button> 

Và nó sẽ không làm bất cứ điều gì theo mặc định.

+0

Tôi cũng muốn biết điều này. Cá nhân tôi nghĩ một nút chỉ nên là một nút và phần tử 'đầu vào [loại = gửi]' thực sự phải gửi biểu mẫu ... –

+0

Tính năng * by-desgin * của nó. –

+0

Tôi không chắc mình hiểu câu hỏi.Các nút là cơ chế để làm cho mọi việc xảy ra. Vì vậy, điểm của một nút mà không làm bất cứ điều gì là gì? Và nếu bạn không muốn có bất kỳ chức năng biểu mẫu nào, tại sao lại sử dụng ''? Nhân tiện, 'phương thức' là tùy chọn và mặc định là' GET'; 'vị trí' không có thuộc tính. –

Trả lời

9

Như có thể thấy tại mục nhập MDN tương ứng, giá trị mặc định cho thuộc tính type của phần tử nút là submit. Vì vậy, nếu bạn bỏ qua hoặc không thay đổi nó thành button hoặc reset, hành vi mặc định sẽ bắt đầu và biểu mẫu được gửi.

<form action=""> 
    <button type="button">Nothing will happen</button> 
    <button>Form gets submitted</button> 
</form> 
+0

Tôi biết nó gửi, nhưng không phải lý do. Cảm ơn các liên kết. – kontur

+0

Tôi đoán không có lý do tại sao, có thể xuất phát từ cố gắng để làm cho nó dễ dàng hơn để mã trở lại trong ngày ... có thể. –

+0

@jeffery_the_wind Tôi nghĩ rằng mục đích sử dụng trong những ngày đầu chỉ là gửi biểu mẫu. Trong những ngày đó không cần thêm thuộc tính 'type'. Sau đó nhu cầu này đến, nhưng để duy trì tính tương thích ngược, kiểu mặc định vẫn là 'submit'. Chỉ cần suy nghĩ của tôi - không có tài liệu tham khảo về điều này. – Sirko

0

Nó được thiết kế theo cách đó bởi vì đôi khi bạn cần biết nút WHICH đã được nhấn ở phía máy chủ. Nếu bạn muốn chức năng nút không có nút, hãy sử dụng thẻ A theo kiểu.

0

Nút được coi là điều khiển gửi trong biểu mẫu, không chắc chắn lý do.

Lý do nó được đăng lên thư mục gốc của bạn là vì bạn không chỉ định action và do đó mặc định được sử dụng.

Lý do sử dụng GET là vì đó là mặc định method.

Để ngăn chặn điều đó xảy ra, hãy thêm return false; vào cuối nút của bạn là onclick.

4

Tôi không làm cho nó một nút gửi

<button> yếu tố có a type attribute. The default value is submit. Đặt type="button" nếu bạn không muốn gửi biểu mẫu.

hoặc thậm chí xác định một phương pháp

method mặc định là GET

hoặc vị trí vào mẫu điều đó không ??

action mặc định là URI hiện tại.

Các vấn đề liên quan