2011-11-10 31 views
6

Tôi có biểu mẫu có nút Gửi dưới dạng Hình ảnh. Khi người dùng nhấp vào nút hình ảnh, nút hình ảnh sẽ đóng vai trò của nút gửi.Nút Gửi hình ảnh trong một Biểu mẫu

Mã mẫu:

<form action="page.php" method="POST"> 
    <input type="image" name="btn_opentextbox" src="image.png" value="Submit" /> 
</form> 

Xử lý thông tin:

if($_POST['btn_opentextbox']) 
{ 
    //do something 
} 

Đáng ngạc nhiên, các mã trên sử dụng để làm việc hoàn toàn tốt đẹp trong Firefox. Tuy nhiên, một khi tôi cập nhật Firefox của tôi ngày hôm qua, nó đã không làm việc ở tất cả. Tôi nhấp vào nút, trang được làm mới và không có gì xảy ra. Mã này cũng không hoạt động trong IE.

Lưu ý: nó hoạt động trong Chrome.

Tôi muốn nó hoạt động trong Firefox, IE, v.v.

Mọi đề xuất?

Trả lời

6

bạn có thể thêm một lĩnh vực ẩn

<input type="hidden" name="action" value="Submit Form"> 

và trong php bạn có thể làm điều này

if($_POST['action'] == "Submit Form"){ 
do something 
} 

hy vọng sự giúp đỡ này.

+0

thông minh một. Sẽ cho nó một thử và cho bạn biết. – user311509

+0

Trước tiên hãy kiểm tra phần tử mảng 'isset()' để tránh các thông điệp 'E_NOTICE'. – MrWhite

2

Kiểm tra btn_opentextbox_x hoặc btn_opentextbox_y để thay thế. (Nó thực sự là . không phải _ nhưng PHP mang nó).

Một số trình duyệt không gửi được giá trị cho bản đồ hình ảnh phía máy chủ, chỉ là tọa độ.

Và dường như bạn đã quên thuộc tính alt.


Ngoài ra, sử dụng một thực tế nút gửi thay vì một bản đồ hình ảnh:

<button type="submit" name="btn_opentextbox" value="submit"><img src="image.png" alt="Submit"></button> 

... nhưng lưu ý rằng một số phiên bản của IE sẽ gửi nội dung HTML thay vì giá trị khi nó được gửi đi.

0

Bạn có nhiều nút trong biểu mẫu đó và cần biết rằng biểu mẫu đã được gửi chưa? Nếu có chỉ là một nút gửi duy nhất tôi đề nghị sử dụng đoạn mã sau:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // process form submission 
    header('Location: page.php?result=success'); 
} 

Bằng cách này bạn sẽ chắc chắn nếu hình thức đã được gửi và cũng tránh nộp gấp đôi nếu người dùng nhấn nút tải lại sau khi hình thức đã được gửi.

3

cho hình ảnh nút gửi

mã php là

if(isset($_POST['btn_opentextbox_X']) || isset($_POST['btn_opentextbox_Y'])) 
{ 
    //do something 
} 
2

Mã php tốt là:

<input type='image' src='../images/blanc.gif' width='596' height='35'  onFocus='form.submit' name='btn_opentextbox'/> 


    if ($_POST["btn_opentextbox_x"]) && ($_POST["btn_opentextbox_y"]) 
    { 

...... 
    } 
+0

"mã php tốt"? Vì hiện tại, mã của bạn sẽ tạo ra thông báo 'E_NOTICE' khi biểu mẫu không được gửi bởi nút gửi hình ảnh. Bạn nên kiểm tra xem phần tử mảng 'isset()'. – MrWhite

+0

... cũng '$ _POST [" btn_opentextbox_x "]' hợp pháp có thể chứa giá trị '0' và do đó đánh giá sai. – MrWhite

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