2010-04-21 32 views

Trả lời

110

Với một hình thức html như:

<input type="submit" name="btnSubmit" value="Save Changes" /> 
<input type="submit" name="btnDelete" value="Delete" /> 

Mã php sử dụng sẽ như thế nào:

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    //something posted 

    if (isset($_POST['btnDelete'])) { 
     // btnDelete 
    } else { 
     //assume btnSubmit 
    } 
} 

Bạn nên luôn luôn giả định hoặc mặc định cho nút gửi đầu tiên xuất hiện dưới dạng mã nguồn html mẫu. Trên thực tế, các trình duyệt khác nhau đáng tin cậy gửi tên/giá trị của một nút gửi với bài dữ liệu khi:

  1. Người dùng theo nghĩa đen nhấp chuột vào nút gửi với chuột hoặc chỉ thiết bị
  2. Hoặc có tập trung vào các nút gửi (chúng được gắn thẻ vào nó), và sau đó nhấn phím enter.

Các cách khác để gửi biểu mẫu tồn tại và một số trình duyệt/phiên bản quyết định không gửi tên/giá trị của bất kỳ nút gửi nào trong một số trường hợp này. Ví dụ: nhiều người dùng gửi biểu mẫu bằng cách nhấn phím enter khi con trỏ/tiêu điểm nằm trên một trường văn bản. Biểu mẫu cũng có thể được gửi qua javascript, cũng như một số phương pháp tối nghĩa hơn. Điều quan trọng là phải chú ý đến chi tiết này, nếu không bạn thực sự có thể làm phiền người dùng khi họ gửi biểu mẫu, "không có gì xảy ra" và dữ liệu của họ bị mất vì mã của bạn không phát hiện được biểu mẫu vì bạn không lường trước được thực tế là tên/giá trị của nút gửi có thể không được gửi cùng với dữ liệu bài đăng.

Ngoài ra, lời khuyên ở trên cũng nên được sử dụng cho các biểu mẫu có một nút gửi đơn quá vì bạn nên luôn đảm nhận nút gửi mặc định.

Tôi biết rằng internet chứa đầy hàng tấn hướng dẫn xử lý biểu mẫu và hầu như tất cả đều không làm gì hơn là kiểm tra tên và giá trị của nút gửi. Nhưng, chúng chỉ đơn giản là sai!

+1

Cảm ơn bạn đã thêm thông tin về việc giả định nút mặc định ... dễ bỏ qua. – kad81

+0

tại sao điều này sử dụng khác thay vì khác nếu? – Buts

+0

@Gorg nếu như thế nào? Bạn sẽ thử nghiệm điều gì và tại sao? – goat

8

Trong HTML:

<input type="submit" id="btnSubmit" name="btnSubmit" value="Save Changes" /> 
<input type="submit" id="btnDelete" name="btnDelete" value="Delete" /> 

Trong PHP:

if (isset($_POST["btnSubmit"])){ 
    // "Save Changes" clicked 
} else if (isset($_POST["btnDelete"])){ 
    // "Delete" clicked 
} 
+3

Xin lỗi, gotta downvote. Hình thức xử lý mà misbehave khi sử dụng phím enter để gửi là một peeve thú cưng của tôi. – goat

+2

@chris - Không sao, bạn tạo một điểm hoàn toàn hợp lệ. Đã bình chọn câu trả lời của bạn. – MiffTheFox

-2

Bạn có yêu cầu trong php hoặc javascript.

Nếu trong php, đặt tên cho tên đó và sử dụng phương thức đăng hoặc nhận, sau đó bạn có thể sử dụng tùy chọn isset hoặc tên nút cụ thể đó được chọn cho giá trị đó.

Nếu đó là trong js, sử dụng getElementById cho rằng

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