2012-05-21 26 views
26

Tôi có một trang web bắt đầu nơi tôi muốn có 2 nút gửi riêng biệt, một trong số đó sẽ nhập dữ liệu và thực hiện một số phép tính để hiển thị trên cùng một màn hình. Tôi đã có này làm việc thành công với:Nhiều nút gửi php hành động khác nhau

<form id="form1" name="form1" method="post" onsubmit="" onreset="" action="programname.php"> 
<input type="submit" name="calc" value="Find Angle"> 

và sau đó tôi sử dụng:

if (!isset($_POST['submit'])){ 
Do actions, display calculations} 

Bây giờ tôi muốn có một nút mà vẫn lấy các dữ liệu họ bước vào nhưng sau đó đi đến một địa chỉ khác thứ hai nộp. Có một cách thanh lịch để làm điều này?

Trả lời

45

Bạn có thể thêm phương thức onclick vào nút gửi mới sẽ thay đổi hành động của biểu mẫu và sau đó gửi.

<script type="text/javascript"> 
    function submitForm(action) { 
    var form = document.getElementById('form1'); 
    form.action = action; 
    form.submit(); 
    } 
</script> 

... 

<form id="form1"> 
    <!-- ... --> 
    <input type="button" onclick="submitForm('page1.php')" value="submit 1" /> 
    <input type="button" onclick="submitForm('page2.php')" value="submit 2" /> 
</form> 
+0

Nó có rks! Cảm ơn rất nhiều! Tôi đã dành một giờ nhìn vào những trường hợp hơi khác so với tôi và không thể hình dung ra được. Bạn đã nhận được nó trong 3 giây :-) Tôi có nhiều hơn nữa để tìm hiểu .. – Joegramming

+0

Điều gì sẽ xảy ra nếu người dùng chỉ cần nhấn phím Enter mà không cần nhấp vào nút gửi? –

+1

@IstiaqueAhmed: Trừ khi bạn thay đổi, nó sẽ gửi biểu mẫu với bất kỳ hành động nào theo mặc định. Nếu đó không phải là những gì bạn muốn, bạn có thể thiết lập bất kỳ hành vi nào bạn muốn thông qua trình lắng nghe 'onsubmit' trên phần tử'

'. – Travesty3

12

Bạn có thể thay đổi hành động biểu mẫu bằng cách sử dụng formaction = "page1.php" trong thuộc tính nút.

<form id="form1" name="form1" method="post" onsubmit="" onreset="" action="programname.php"> 
    <input type="submit" name="calc" value="Find Angle"> 

    <input type="button" type="submit" formaction="page1.php">Action 0</button> 
    <input type="button" type="submit" formaction="page2.php">Action 1</button> 
</form> 

Lưu ý: Thuộc tính formaction của thẻ nút không được hỗ trợ trong Internet Explorer 9 và các phiên bản cũ hơn.

+0

Thật vậy, có thuộc tính như ['formaction'] (http://www.w3.org/TR/html-markup/button.submit.html#button.submit.attrs.formaction) trong tiêu chuẩn HTML5. –

+0

Điều đó có vẻ là giải pháp sạch nhất, cảm ơn! –

6

Cách tốt nhất để đối phó với nhiều nút gửi đang sử dụng chuyển đổi trường hợp trong Action Script

<form action="demo_form.php" method="get"> 

    Choose your favorite subject: 

    <button name="subject" type="submit" value="html">HTML</button> 
    <button name="subject" type="submit" value="css">CSS</button> 
    <button name="subject" type="submit" value="javascript">Java Script</button> 
    <button name="subject" type="submit" value="jquery">jQuery</button> 

</form> 

Action/Server Side kịch bản:

demo_form.php

<?php 

switch($_REQUEST['subject']) { 

    case 'html': //action for html here 
       break; 

    case 'css': //action for css here 
       break; 

    case 'javascript': //action for javascript here 
         break; 

    case 'jquery': //action for jquery here 
        break; 
} 

?> 

Ref : W3Schools

+0

Tôi biết câu hỏi/câu trả lời này là một chút cũ nhưng chỉ là một lưu ý: giải pháp này không đi đến một địa chỉ khác theo yêu cầu. – Ezenhis

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