2013-03-22 40 views
5

Biểu mẫu của tôi hiện có hai nút gửi. Một cho Search và một cho một chức năng Mark Complete. Tôi cần hiển thị hộp thoại xác nhận CHỈ khi nút "Đánh dấu Hoàn thành" được nhấp để gửi biểu mẫu với quá trình xác thực đó được thông qua. Có thể xác định điều này không? Tôi hiện đang có chức năng confirmComplete bên dưới:Javascript Cách sử dụng Hộp thoại xác nhận trên Gửi kèm hai nút gửi trên JSP

function confirmComplete() { 
alert("confirmComplete"); 
var answer=confirm("Are you sure you want to continue"); 
if (answer==true) 
    { 
    return true; 
    } 
else 
    { 
    return false; 
    } 
} 

Mọi trợ giúp sẽ được đánh giá cao!

+0

Bạn có thể chỉ sử dụng javascript - thiết lập các nút nộp cho được nút thường xuyên type = "button" đặt mỗi một onclick đến một khác nhau và nếu bạn muốn gửi biểu mẫu, chỉ cần sử dụng javascript: [form_element] .submit(); – Adidi

+0

Tôi phải giữ chúng dưới dạng loại = "gửi" do các chức năng khác đã được đưa vào vị trí. – Richard

Trả lời

24

Đặt onclick thuộc tính của nút "Mark Complete" này

onclick="return confirm('Are you sure you want to continue')" 

và loại bỏ các chức năng confirmComplete từ mẫu

+0

Cảm ơn, công trình này. – Richard

1

Bạn cần thực hiện sự kiện từ nhấp chuột vào nút chứ không phải gửi biểu mẫu. Không có cách nào để biết những gì đã gửi biểu mẫu.

2

Bạn có thể. Bạn có thể đặt các nút của bạn như thế này

<input type="submit" value="Search" /> 
<input type="submit" value="Mark Complete" onclick="{return confirmComplete();}" /> 

Khi Đánh dấu Hoàn button được click thì hàm confirmComplete sẽ được gọi và khi người dùng nói OK trong hộp thoại xác nhận sau đó chỉ có hình thức sẽ được đệ trình.

1

Vì vậy, đây là một giải pháp bypass:

<form id="frm" action="page.php" method="post" onsubmit="return onSubmit();"> 
    <input /> 
    <input type="submit" value="sub1" onclick="sub1();" /> 
    <input type="submit" value="sub2" onclick="sub1();" /> 
</form> 
<script type="text/javascript"> 
<!-- 
var frm = document.getElementById('frm'); 
function onSubmit(){ 
    return false; 
} 

function sub1(){ 
    alert('s1'); 
    frm.submit(); 
} 

function sub2(){ 
    alert('s2'); 

} 
//--> 
</script> 
+0

Giải pháp thú vị. Phương thức xác nhận trả lại được hiển thị bên dưới là cách đơn giản nhất để thực hiện việc này. – Richard

0

khi bạn gọi "xác nhận()" javascript bật lên chức năng, như onclick = "return confirm ('? Bạn có chắc chắn để tiến hành')", xác nhận hộp xuất hiện với thông báo 'Bạn có chắc chắn sẽ tiếp tục không?' với hai tùy chọn 'ok' và 'cancel'.khi bạn nhấp vào ok, nó sẽ trả về true và tiếp tục thực hiện trang web hoặc nếu bạn nhấp vào hủy, nó sẽ trả về false và ngừng thực thi thêm trang web.

0

Tôi không biết cho thẻ đầu vào nhưng nó không hoạt động cho tôi với sự kiện nhấp trực tiếp trên nút. Trong trường hợp của tôi, biểu mẫu đã được đăng ngay lập tức.

Dưới đây là một giải pháp khả thi cho một hình thức với nhiều nút (mà chỉ một trong số họ phải hiển thị thông báo xác nhận)

Trong giao diện:

<FORM name="F_DESTINATION_DB" id="F_DESTINATION_DB" method="POST" onsubmit="return popConfirmationBox('<?php echo LanguageControler::getGeneralTranslation("DELETE_CONFIRMATION_MESSAGE", "Deleting is an irreversible action. Are you sure that you want to proceed to the deleting?");?> ','DELETE_DB_BUTTON')"> 

Javascript (trong tập tin bên ngoài để tái sử dụng mã):

/** 
* Display a confirmation message box to validate if we must post the page or not. 
* 
* @param message String to display 
* @param tagId String id of the tag that must display the message. 
* 
* @return Boolean (confirmation) 
*/ 
function popConfirmationBox(message, tagId){ 

    var confirmation = true; 

    if (typeof tagId === 'string' && document.activeElement.id.toUpperCase() === tagId.toUpperCase()) { 

     if (typeof message === 'string' && message.length > 0) { 

      confirmation = window.confirm(message); 
     } 
    } 

    return confirmation; 
} 

Tôi đã khá khó khăn để đạt được điều này (cần nhiều nghiên cứu và thử nghiệm), nhưng mã kết quả khá đơn giản.

Theo mặc định, tôi cho rằng xác nhận là có (trong trường hợp nút được nhấp không phải là nút có nghĩa là hiển thị thư hoặc nếu người dùng không cung cấp chuỗi thư hợp lệ).

Lưu ý bổ sung: Tất nhiên, mã này sẽ không thực hiện thủ thuật nếu trình duyệt của người dùng chặn mã phía máy khách.

Tôi hy vọng nó sẽ giúp ai đó,

Jonathan Parent-Levesque từ Montreal

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