2013-08-23 86 views
26

Tôi đang phát với Buttons in the w3schools Tryit editor và tôi đang cố gắng tìm hiểu cách làm cho trình duyệt của tôi chuyển hướng đến URL khi tôi nhấp vào nút "Hủy".Cách tạo nút Hủy HTML chuyển hướng đến URL

Dưới đây là những gì tôi đã cố gắng:

<form action="demo_form.asp" method="get"> 
 
    First name: <input type="text" name="fname"><br> 
 
    Last name: <input type="text" name="lname"><br> 
 
    <button type="submit" value="Submit">Submit</button> 
 
    <button type="reset" value="Reset">Reset</button> 
 
    <button type="cancel" onclick="javascript:window.location='http://stackoverflow.com';">Cancel</button> 
 
</form>

Nhưng nó không hoạt động. Bất kỳ ý tưởng?

Trả lời

42

cancel không phải là giá trị hợp lệ cho thuộc tính loại, vì vậy, nút này có thể là mặc định là submit và tiếp tục gửi biểu mẫu. Bạn có thể có nghĩa là type="button".

(The javascript: cần được loại bỏ, mặc dù trong khi nó không làm hại, nó là một hoàn toàn vô dụng label)

Bạn không có bất kỳ nút giống như chức năng mặc dù, như vậy sẽ được tốt hơn off với :

<a href="http://stackoverflow.com"> Cancel </a> 

... có thể với một số CSS để làm cho nó trông giống như một nút.

13

Có một vài vấn đề ở đây.

Trước hết, không có điều nào như <button type="cancel">, do đó, nó được coi là chỉ <button>. Điều này có nghĩa là biểu mẫu của bạn sẽ được gửi, thay vì nút đưa bạn đến nơi khác.

Thứ hai, javascript: chỉ cần thiết trong các thuộc tính href hoặc action, trong đó URL được mong đợi, để chỉ định mã JavaScript. Bên trong onclick, nơi JavaScript đã được mong đợi, nó chỉ hoạt động như một nhãn hiệu và không phục vụ mục đích thực sự nào.

Cuối cùng, thiết kế thường chỉ có thiết kế tốt hơn là hủy liên kết thay vì nút hủy. Vì vậy, bạn chỉ có thể làm điều này:

<a href="http://stackoverflow.com/">Cancel</a> 

Với CSS bạn thậm chí có thể làm cho nó trông giống như một nút, nhưng với HTML này hoàn toàn không có nhầm lẫn về những gì nó được cho là phải làm.

+0

Cảm ơn! Kolink. Bạn có thể chỉ cho tôi tài liệu hướng dẫn về cách làm cho liên kết trông giống như một nút không? –

+2

Cách dễ nhất là đặt nút bên trong liên kết. – JJJ

+0

@Juhana, và đó sẽ là đánh dấu không hợp lệ, vì vậy xin vui lòng không đề xuất nó. – zzzzBov

5
<input class="button" type="button" onclick="window.location.replace('your_url')" value="Cancel" /> 
+0

yêu cầu hủy 'nút' để chuyển hướng đến url, sau đó tại sao lại giảm số phiếu –

+0

Tôi đã trao cho bạn phiếu bầu. Cảm ơn bạn đã trả lời câu hỏi của tôi. –

+4

Có lẽ bạn nên xem xét thêm một chút giải thích cho dòng mã của bạn. Bối cảnh luôn luôn giúp - bạn có thể nói với OP những gì đã sai trong cách tiếp cận của họ và tại sao câu trả lời của bạn giải quyết được vấn đề. Xem câu trả lời của Kolink hoặc Quentin để có được ý tưởng. – slhck

9

nó mặc định để gửi một hình thức, cách dễ nhất là thêm "return false"

<button type="cancel" onclick="window.location='http://stackoverflow.com';return false;">Cancel</button> 
+1

nếu đó là trường hợp nó sẽ đi đến url, thay vào đó nó gửi biểu mẫu, trả về false ngăn chặn gửi biểu mẫu và sau đó nó thực sự chuyển hướng. – Konstantin

+0

Tôi đã bỏ phiếu cho bạn. Cảm ơn bạn đã trả lời câu hỏi của tôi. –

19

Không có button type="cancel" trong html. Bạn có thể thử như thế này

<a href="http://www.url.com/yourpage.php">Cancel</a> 

Bạn có thể làm cho nó trông giống như một nút bằng cách sử dụng thuộc tính kiểu CSS.

+4

Để tránh nhận một nút có nhãn được gạch dưới như một liên kết, hãy sử dụng nút < Hủy 'thay vì đầu vào. – Noumenon

+3

Tại sao bạn lại đặt một nút bên trong một liên kết? Nếu điều này hoạt động, đó chắc chắn là hành vi kỳ quặc ... Trên thực tế, các tiêu chuẩn HTML thậm chí không cho phép điều này: https://www.w3.org/TR/html-markup/button.button.html#button.button-constraints – Christian

+1

Đánh dấu này là nguy hiểm không hợp lệ, và nó liên quan đến tôi rằng 21 người nghĩ rằng đó là một gợi ý tốt. Vui lòng cập nhật câu trả lời của bạn hoặc xóa câu trả lời để không ai sử dụng mã này trong môi trường sản xuất. – zzzzBov

-1
<button onclick=\"window.location='{$_SERVER['PHP_SELF']}';return false;\">Reset</button> 

Không đủ đại diện để bỏ phiếu cho Kostyan. Đây là giải pháp cuối cùng của tôi (cần một nút reset).

Cảm ơn một lần nữa để Kostyan trả lời câu hỏi như được hỏi mà không đề xuất phương pháp "giải pháp" (tốn thời gian) để "tạo nút" với kiểu.

Đây là nút (mà người xem muốn xem) và nó hoạt động chính xác như được yêu cầu. Và nó trộn lẫn với các nút khác trên trang. Không phức tạp.

Tôi đã xóa "type = cancel" dường như vô ích. Vì vậy, thậm chí ít mã hơn. :)

+0

Đừng để phong cách của bạn dictate đánh dấu của bạn. Viết html của bạn và phong cách nó sau. Viết html để đạt được các kiểu nhất định là giải pháp thay thế. (Hãy tưởng tượng bạn muốn có văn bản được gạch dưới màu xanh, vì vậy bạn đã sử dụng thẻ 'a' với' href = 'javascript: return false;' thay vì tạo kiểu cho văn bản) – Chaim

+0

Vấn đề ở đây là bạn dường như nghĩ rằng tốn thời gian = workaround. Đo không phải sự thật. – Chaim

+0

Ya mất tôi. Mục tiêu của tôi là một nút cho thấy việc đặt lại từ, được pha trộn với các nút khác (trải nghiệm người dùng/giao diện & cảm nhận) và tất nhiên đã KHÔNG gửi biểu mẫu. Điều này hoàn thành cả ba khá độc đáo. Khi nó xảy ra, nó cũng phù hợp với câu hỏi được đăng vì tất cả những gì được yêu cầu là sự thay thế của bất kỳ URL nào khác cho phần php_self. – TheSatinKnight

-1

Với Jquery:

$(".cancel-button").click(function (e) { 
    e.preventDefault(); 
}); 
4

type = "button" Chỉ cần đặt

<button type="button"><b>Cancel</b></button> 

Bởi vì nút bấm của bạn là bên trong một hình thức nó được dùng giá trị mặc định là nộp và type = "hủy" không tồn tại.

+1

HTML không cho phép phần tử '

+0

right !!! đã chỉnh sửa câu trả lời ... – shadow0359

+0

Nút đó bây giờ không làm gì trừ khi bạn ràng buộc một số JavaScript với nó. – Quentin

0

Đó là những gì tôi đang sử dụng thử.

<a href="index.php"><button style ="position:absolute;top:450px;left:1100px;height:30px;width:200px;"> Cancel </button></a> 
Các vấn đề liên quan