html - 여러개 - jquery 다중 form




하나의 양식에 두 개의 제출 버튼 (12)

formaction HTML 속성 사용

<form action="/action_page.php" method="get">
  First name: <input type="text" name="fname"><br>
  Last name: <input type="text" name="lname"><br>
  <button type="submit">Submit</button><br>
  <button type="submit" formaction="/action_page2.php">Submit to another page</button>
</form>

양식에 두 개의 제출 버튼이 있습니다. 어느 것이 서버 측에 부딪혔는 지 어떻게 알 수 있습니까?


href 속성을 사용하고 각 버튼에 값을 추가 한 get을 보낼 수도 있습니다. 그러나 그 형식은 요구되지 않습니다.

href="/SubmitForm?action=delete"
href="/SubmitForm?action=save"

각 입력에 다른 값을 지정하고 동일한 이름을 유지할 수 있습니다.

<input type="submit" name="action" value="Update" />
<input type="submit" name="action" value="Delete" />

그런 다음 코드가 트리거 된 것을 확인합니다.

if ($_POST['action'] == 'Update') {
    //action for update here
} else if ($_POST['action'] == 'Delete') {
    //action for delete
} else {
    //invalid action!
}

유일한 문제는 입력 내 텍스트에 로직을 묶는 것입니다. 또한 각각에 고유 한 이름을 부여하고 해당 입력의 존재를 $ _POST에서 확인할 수 있습니다.

<input type="submit" name="update_button" value="Update" />
<input type="submit" name="delete_button" value="Delete" />

그리고 코드에서 :

if (isset($_POST['update_button'])) {
    //update action
} else if (isset($_POST['delete_button'])) {
    //delete action
} else {
    //no button pressed
}

간단한 다른 제출 버튼에서 양식의 동작을 변경할 수 있습니다.

이 문서에서보십시오. 준비

$(".acceptOffer").click(function () {
       $("form").attr("action", "/Managers/SubdomainTransactions");
});

$(".declineOffer").click(function () {
       $("form").attr("action", "/Sales/SubdomainTransactions");
});

다음과 같이 단추를 표시 할 수 있습니다.

<input type="submit" name="typeBtn" value="BUY">
<input type="submit" name="typeBtn" value="SELL">

그리고 코드에서 다음을 사용하여 값을 얻을 수 있습니다.

if request.method == 'POST':
    #valUnits = request.POST.get('unitsInput','')
    #valPrice = request.POST.get('priceInput','')
    valType = request.POST.get('typeBtn','')

(valUnits 및 valPrice는 내가 일러스트레이션을 위해 남긴 양식에서 추출한 다른 값입니다.)


더 나은 솔루션은 단추 태그를 사용하여 양식을 제출하는 것입니다.

<form>
    ...
    <button type="submit" name="action" value="update">Update</button>
    <button type="submit" name="action" value="delete">Delete</button>
</form>

이렇게하면 국제화 및 다중 표시 언어에 불편 함이 없습니다 (이전 솔루션에서는 버튼의 레이블이 서버로 전송되는 값이기도합니다).


서로 다른 기능을 가진 두 개의 제출 버튼이있는 경우 명시 적으로 다음과 같은 제출 유형으로 입력 버튼에 알려주십시오.

<input type="submit" click="save()" name="saveBtn" value="save">
<input type="submit" click="update()" name="updateBtn" value="update">

어떤 버튼이 서버 측에서 호출되는지에 대해 걱정할 필요가 없습니다. 논리를 각 기능에 따로 따로 작성하여 호출하십시오. 그들은 다른 사람들을 방해하지 않고 일을 할 것입니다.


어쩌면 2009 년에 제안 된 해결책이 있었지만, 필자는이 모든 답변을 테스트했으며 아무도 모든 브라우저에서 작업하고 있지 않습니다.

유일한 해결책은 내가 일하는 것으로 나타났습니다 : (하지만 조금 추한 내가 생각하는 사용)

<form method="post" name="form">
<input type="submit" value="dosomething" onclick="javascript: form.action='actionurl1';"/>
<input type="submit" value="dosomethingelse" onclick="javascript: form.action='actionurl2';"/>


이것은 테스트하기가 매우 쉽습니다.

<form action="" method="get">

<input type="submit" name="sb" value="One">
<input type="submit" name="sb" value="Two">
<input type="submit" name="sb" value="Three">

</form>

HTML 페이지에 넣고 단추를 클릭 한 다음 URL을 살펴보십시오.


이런 식으로 할 수도 있습니다 (N 입력이 있다면 매우 편리하다고 생각합니다).

<input type="submit" name="row[1]" value="something">
<input type="submit" name="row[2]" value="something">
<input type="submit" name="row[3]" value="something">

그리고 서버 측 (필자의 예제에서는 PHP)에서 "row"를 배열로 읽어 인덱스를 얻을 수 있습니다.

$index = key($_POST['row']);

$ _POST [ 'row']는 index => value 형식의 요소가 하나만있는 배열입니다 (예 : '2'=> 'something').

http://php.net/manual/en/function.key.php


namearray 로 정의하십시오.

<form action='' method=POST>
    (...) some input fields (...)
    <input type=submit name=submit[save] value=Save>
    <input type=submit name=submit[delete] value=Delete>
</form>

예제 서버 코드 (PHP) :

if (isset($_POST["submit"])) {
    $sub = $_POST["submit"];

    if (isset($sub["save"])) {
        // save something;
    } elseif (isset($sub["delete"])) {
        // delete something
    }
}

elseif 매우 중요합니다. 왜냐하면 둘 다 구문 분석되지 않기 때문입니다. 즐겨.


<form method="post">
<input type="hidden" name="id" value="'.$id.'" readonly="readonly"/>'; //any value to post PHP
<input type='submit' name='update' value='update' formAction='updateCars.php'/>
<input type='submit' name='delete' value='delete' formAction='sqlDelete.php'/>
</form>




submit