2008-11-16 44 views

Trả lời

2

Như Nahom đã nói, ngoại trừ tôi sẽ gọi số javascript:message() trực tiếp trong phần href (không cần onclik).

Lưu ý: để lại lệnh gọi JavaScript trong onClick có một lợi ích: trong href thuộc tính, bạn có thể đặt một URL để đi đến nếu người dùng không có kích hoạt Javascript. Bằng cách đó, nếu họ có JS, mã của bạn sẽ được chạy. Nếu không, họ đi đâu đó nơi họ được hướng dẫn để kích hoạt nó (có lẽ).

Hiện tại, quy trình message của bạn không chỉ phải đặt câu hỏi mà còn sử dụng câu trả lời: nếu tích cực, nó phải gọi submit() trên biểu mẫu để đăng biểu mẫu. Bạn có thể vượt qua this trong cuộc gọi để giảm bớt việc tìm nạp biểu mẫu.

Cá nhân, tôi sẽ tìm nút (thẻ đầu vào khi bạn hiển thị) thay vì liên kết đơn giản để thực hiện quy trình: nó sẽ sử dụng mô hình quen thuộc hơn cho người dùng.

[EDIT] Vì tôi thích để xác minh câu trả lời tôi đưa ra, tôi đã viết một bài kiểm tra đơn giản:

<script type="text/javascript" language="JavaScript"> 
function AskAndSubmit(t) 
{ 
    var answer = confirm("Are you sure you want to do this?"); 
    if (answer) 
    { 
    t.form.submit(); 
    } 
} 
</script> 

<form action="Tests/Test.html" method="GET" name="subscriberAddForm"> 
<input type="hidden" name="locationId" value="2721"/> 
<input type="text" name="text" value="3.1415926535897732384"/> 
<input type="button" name="Confirm" value="Submit this form" onclick="AskAndSubmit(this)"/> 
</form> 

Vâng, submit chỉ cần tải lại trang ở đây ... Tested chỉ trong FF3.

[EDIT] gợi ý sau trong các ý kiến ​​... :-)

+0

"t.parentNode" hoạt động cho ví dụ này, nhưng nó dễ vỡ vì nó chứa một giả định. Tốt hơn là "t.form". – Tomalak

+0

Tomalak đúng, t.form sẽ tốt hơn. – scunliffe

23
<a href="http://somewhere_else" onclick="return confirm()"> 

Khi người dùng nhấp vào liên kết, hàm confirm sẽ được gọi. Nếu hàm xác nhận trả về false, quá trình truyền tải liên kết bị hủy, nếu trả về true, liên kết sẽ được truyền tải.

0
<a href="#" onclick="message(); return false;">???</a> 

Câu trả lời này sẽ là OK chỉ khi nhấp chuột không cần phải điều hướng người dùng đến một trang khác.

15
<a href="http://something.com" onclick="return confirmAction()">try to click, I dare you</a> 

với chức năng

function confirmAction(){ 
     var confirmed = confirm("Are you sure? This will remove this entry forever."); 
     return confirmed; 
} 

(bạn cũng có thể trả lại xác nhận ngay lập tức, tôi tách nó vì lợi ích của khả năng đọc)

Tested trong FF, Chrome và IE

+0

Giải pháp của bạn làm việc cho tôi, có lẽ vì tôi đã lặp lại liên kết href từ php. Cảm ơn! – Daydah

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