Sử dụng một liên kết bình thường để gửi một hình thức


129

Tôi muốn gửi một hình thức. Nhưng tôi không sử dụng nút đầu vào cơ bản với kiểu gửi mà liên kết.

Hình ảnh dưới đây cho thấy tại sao. Tôi đang sử dụng các liên kết hình ảnh để lưu / gửi biểu mẫu. Bởi vì tôi có đánh dấu css nổi bật cho các liên kết hình ảnh, tôi không muốn sử dụng các nút gửi đầu vào.

Tôi đã thử áp dụng onClick = "document.formName.submit ()" cho một phần tử nhưng tôi thích phương thức html hơn.

văn bản thay thế

Có ý kiến ​​gì không?


3
sử dụng nút và css nó để hiển thị hình ảnh hoặc sử dụng javascript, không có cách nào thực sự đơn giản để gửi một biểu mẫu mà không cần javascript.
Anton S

Tôi thứ hai, thật không may, đây không phải là một cách dễ dàng với javascript
benhowdle89

4
Lý do của bạn để làm điều này nghe có vẻ như một nền kinh tế sai lầm. Tốt hơn là chỉ cần đưa ra một css tiêu chuẩn để gửi các nút và sử dụng các biểu mẫu theo cách chúng được thiết kế để sử dụng. Có một đống các kỹ thuật nút css mô tả ở đây: tripwiremagazine.com/2009/06/
Khăn

Câu trả lời:


168

Hai lối. Tạo một nút và tạo kiểu cho nó giống như một liên kết với css hoặc tạo một liên kết và sử dụng onclick="this.closest('form').submit();return false;".


55
Aaaaaaaand đây là tài liệu tham khảo về cách tạo kiểu nút như một liên kết: stackoverflow.com/questions/1367409/ Lời
flipchart

3
lưu ý rằng form.submit()sẽ không hoạt động nếu không có JavaScript
baptx

3
@baptx ngay cả điện thoại thông minh cũ cũng đã bật javascript
Mahdi Jazini

2
@MahdiJazini rất nhiều người vô hiệu hóa JavaScript theo mặc định có thể xâm nhập và ảnh hưởng đến hiệu suất trong một số trường hợp. Nếu JavaScript không thành công, nó có thể phá vỡ toàn bộ trang web (ví dụ: sử dụng CDN mà không có dự phòng cục bộ và tên miền của bên thứ ba bị chặn). Nếu có lỗi HTML, bạn vẫn có thể sử dụng trang web. Các nhà phát triển nên theo nguyên tắc tăng cường tiến bộ thay thế.
baptx

3
Nếu bạn muốn hỗ trợ người dùng mà không cần javascript, hãy thực hiện tùy chọn đầu tiên được mô tả trong câu trả lời này, tạo kiểu cho một nút như một liên kết. Chẳng hạn input[type=submit].link { border: none; background: none; display: inline; color: blue; text-decoration: underline; }<input type=submit class="link" />
Jan Sverre

87

Bạn thực sự không thể làm điều này mà không có một số hình thức kịch bản theo sự hiểu biết tốt nhất của tôi.

<form id="my_form">
<!-- Your Form -->    
<a href="javascript:{}" onclick="document.getElementById('my_form').submit(); return false;">submit</a>
</form>

Ví dụ từ đây .


1
và khách truy cập thân yêu ... đừng quên đặt >>> id = "my_form" đó không phải là tên: D
Mahdi Jazini

Đây phải là câu trả lời tốt nhất và rõ ràng, cảm ơn!
yehanny

28

Chỉ cần tạo kiểu input type="submit"như thế này đã làm việc cho tôi:

.link-button { 
     background: none;
     border: none;
     color: #0066ff;
     text-decoration: underline;
     cursor: pointer; 
}
<input type="submit" class="link-button" />

Đã thử nghiệm trong Chrome, IE 7-9, Firefox


chỉ dành cho bản ghi: bạn nên chọn inputphần tử thích hợp bằng cách sử dụng bộ chọn CSS mà không cần đính kèm một lớp vào phần tử HTML.
Erik Kaplun

Mặc dù nhận xét của bạn là cách ưa thích, nhưng điều này không phải lúc nào cũng có thể
Serj Sagan

Tại sao đó là cách ưa thích?
Đánh dấu

Đó là một thực hành mã hóa được thành lập, thường để lại html sạch hơn ... nhưng nó không phải là một vấn đề lớn
Serj Sagan

1
Câu trả lời này không phụ thuộc vào javascript, đây là một điều ít phải lo lắng hơn
Matthew Lock

10

Bạn đang sử dụng hình ảnh để gửi .. vì vậy bạn chỉ cần sử dụng type="image""nút" đầu vào:

<input type="image" src="yourimage.png" name="yourinputname" value="yourinputvalue" />

1
... Hoặc một <button>yếu tố có một <img/>yếu tố trong đó.
DanMan

Đây là liên kết MDN cho điều này trong trường hợp bất kỳ ai khác muốn có một nguồn: developer.mozilla.org/en-US/docs/Web/HTML/Euity/input/image
Sam

5

sử dụng:

<input type="image" src=".."/>

hoặc là:

<button type="send"><img src=".."/> + any html code</button>

cộng với một số CSS


0

Chắc chắn, không có giải pháp nào với HTML thuần túy để gửi biểu mẫu bằng thẻ link ( a). HTML tiêu chuẩn chỉ chấp nhận các nút hoặc hình ảnh. Như một số cộng tác viên khác đã nói, người ta có thể mô phỏng sự xuất hiện của một liên kết bằng một nút, nhưng tôi đoán đó không phải là mục đích của câu hỏi.

IMHO, tôi tin rằng giải pháp được đề xuất và chấp nhận không hoạt động.

Tôi đã thử nó trên một biểu mẫu và trình duyệt không tìm thấy tài liệu tham khảo cho biểu mẫu.

Vì vậy, có thể giải quyết nó bằng một dòng JavaScript duy nhất, sử dụng thisđối tượng, tham chiếu đến phần tử được nhấp, là nút con của biểu mẫu, cần phải được gửi. Vậy this.parentNodelà nút hình thức. Sau đó chỉ là submit()phương thức gọi theo hình thức đó. Không có nghiên cứu cần thiết từ toàn bộ tài liệu để tìm đúng mẫu.

<form action="http://www.greatsolutions.com.br/indexint.htm"                   
   method="get">
    <h3> Enter your name</h3>
    First Name <input type="text"  name="fname"  size="30"><br>
    Last Name <input type="text" name="lname" size="30"><br>
    <a href="#" onclick="this.parentNode.submit();"> Submit here</a>
</form>

Giả sử tôi nhập với tên của chính mình:

Đơn cần điền

Tôi đã sử dụng getthuộc tính phương thức biểu mẫu vì có thể thấy các tham số phù hợp trong URL tại trang được tải sau khi gửi.

http://www.greatsolutions.com.br/indexint.htm?fname=Paulo&lname=Buchsbaum

Giải pháp này rõ ràng áp dụng cho bất kỳ thẻ nào chấp nhận onclicksự kiện hoặc một số sự kiện tương tự.

thislà một lựa chọn tuyệt vời để khôi phục bối cảnh cùng với eventbiến (có sẵn trong tất cả các trình duyệt chính và IE9 trở đi) có thể được sử dụng trực tiếp hoặc chuyển qua làm đối số cho hàm.

Trong trường hợp này, thay thế dòng bằng athẻ bằng dòng bên dưới, sử dụng thuộc tính target, cho biết phần tử đã bắt đầu sự kiện.

<a href="#" onclick="event.target.parentNode.submit();"> Submit here</a>

@Nathan, tôi không có nhiều thực hành viết Stackoverflow. Tôi hy vọng rằng sự điều chỉnh của bạn sẽ giúp tôi cải thiện phong cách của mình. Tiếng Anh của tôi cũng không tốt.
Paulo Buchsbaum

0

bạn có thể sử dụng OnClick = "document.getEuityById ('formID_NOT_NAME'). SUBMIT ()"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.