2012-05-21 5 views
26

두 개의 별도 제출 버튼이있는 웹 사이트를 시작했습니다. 그 중 하나는 입력 된 데이터를 가져 와서 같은 화면에 표시하기 위해 일부 계산을 수행합니다. 나는 성공적으로 작업이있어 ​​:여러 제출 버튼 PHP 다른 작업

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

하고 내가 사용

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

지금 나는 두 번째 여전히 사용자가 입력 한 데이터를 잡고하지만 다른 주소로 이동 버튼을 제출합니다. 이것을 할 수있는 우아한 방법이 있습니까?

답변

45

양식의 동작을 변경하고 제출할 새 제출 단추에 onclick 메서드를 추가 할 수 있습니다.

<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

It wo rks! 고마워요! 나는 광산과는 약간 다른 경우를 보면서 한 시간을 보냈고 그것을 이해할 수 없었다. 3 초 안에 알 수 있습니다 .--) 배울 것이 많습니다. – Joegramming

+0

사용자가 제출 버튼을 누르지 않고 Enter 키를 누르면 어떻게됩니까? –

+1

@IstiaqueAhmed : 변경하지 않는 한 기본적으로 어떤 동작이든 양식을 제출합니다. 그것이 원하는 것이 아니라면,'

'엘리먼트의'onsubmit' 리스너를 통해 원하는 행동을 설정할 수 있습니다. – Travesty3

12

버튼 속성에서 formaction = "page1.php"를 사용하여 양식 동작을 변경할 수 있습니다.

<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> 

참고 : 단추 태그의 formaction 특성은 Internet Explorer 9 및 이전 버전에서 지원되지 않습니다.

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; 
} 

?> 

참조 :

+0

실제로 HTML5 표준에는 [formaction'] (http://www.w3.org/TR/html-markup/button.submit.html#button.submit.attrs.formaction)과 같은 속성이 있습니다. –

+0

그게 가장 깨끗한 솔루션, 감사합니다! –

6

제출 '버튼을 여러 대처하는 가장 좋은 방법은 액션 스크립트

<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> 

액션/서버 측 스크립트에 스위치 케이스을 사용하고 있습니다 : W3Schools

+0

이 질문/대답은 약간 오래된 것이지만이 해결책은 요청한대로 다른 주소로 가지 않는다는 것을 알고 있습니다. – Ezenhis