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 ... :-)
"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
Tomalak đúng, t.form sẽ tốt hơn. – scunliffe