jQuery를 사용하여 양식 제출 [닫기]


476

jQuery를 사용하여 양식을 제출하고 싶습니다. 누군가 코드, 데모 또는 예제 링크를 제공 할 수 있습니까?

답변:


482

양식을 정상적으로 제출하는지 또는 AJAX 호출을 통해 제출하는지에 따라 다릅니다. jquery.com 에서 예제가 포함 된 설명서를 포함하여 많은 정보를 찾을 수 있습니다 . 양식을 정상적으로 제출하려면 submit()해당 사이트에서 방법을 확인 하십시오. 들어 AJAX 당신은 아마 중 하나를 사용할 불구하고, 여러 가지 가능성이있다 ajax()또는 post()방법을. 참고 post()단지 편리한 방법 정말이 호출 ajax()A, 단순화 및 제한 인터페이스 방법.

내가 매일 사용하는 중요한 리소스는 북마크해야하는 jQuery 작동 방식입니다. 입니다. jQuery 사용에 대한 자습서가 있으며 왼쪽 탐색을 통해 모든 설명서에 액세스 할 수 있습니다.

예 :

표준

$('form#myForm').submit();

아약스

$('input#submitButton').click( function() {
    $.post( 'some-url', $('form#myForm').serialize(), function(data) {
         // ... do something with response from server
       },
       'json' // I expect a JSON response
    );
});

$('input#submitButton').click( function() {
    $.ajax({
        url: 'some-url',
        type: 'post',
        dataType: 'json',
        data: $('form#myForm').serialize(),
        success: function(data) {
                   // ... do something with the data...
                 }
    });
});

위 의 ajax()post()방법은 동일합니다. ajax()오류 등을 처리 하기 위해 요청에 추가 할 수있는 추가 매개 변수가 있습니다 .


3
직렬화 방법이 누락되었습니다. 분명히 jQuery.com을 보았지만 $.post제출 할 데이터를 생성하기 위해 양식을 명시 적으로 해체하고 재구성하는 문서가 있습니다. 감사!
nomen

1
데이터를 준비한 후 제출하기 전에 게시 요청 (아약스가 아닌 양식 제출 요청)에 추가하고 싶은 경우 어떻게해야합니까?
아렉 쿠스

1
@AlexanderSupertramp-위의 예에서 데이터는 URL 인코딩 양식 매개 변수로 전송됩니다. 데이터를 추가 양식 매개 변수로 간단히 추가 할 수 있습니다. $('form#MyForm').serialize() + '&newData=' + newData + '&moreData=' + moreData. 참고 : 후자 두 개를 사용하여 URL 인코딩해야 할 수도 있습니다 encodeURIComponent(). 또는 양쪽 끝에서 JSON 인코딩을 사용하도록 변경할 수 있지만 추가 데이터와 함께 양식 데이터를 JavaScript 데이터 구조에 넣고 직렬화해야합니다. 이 경우 serializeArray양식을 사용하고 다른 데이터를 병합 할 수 있습니다.
tvanfosson

"json 응답이 예상됩니다"라는 다른 문제가 해결되었습니다 (예 : Flask 호출 실패).
scharfmn

'submit'이라는 제출 버튼이있는 경우, 자동으로 실패하거나 (jQuery) "submit is a function"(vanilla js)이라는 오류가 발생합니다. 버튼을 다른 이름으로 바꾸면 문제가 해결 됩니다. ¯_ (ツ) _ / ¯ 🤷
fzzylogic

122

를 사용해야 $("#formId").submit()합니다.

일반적으로 함수 내에서 이것을 호출합니다.

예를 들면 다음과 같습니다.

<input type='button' value='Submit form' onClick='submitDetailsForm()' />

<script language="javascript" type="text/javascript">
    function submitDetailsForm() {
       $("#formId").submit();
    }
</script>

Jquery 웹 사이트 에서 이에 대한 자세한 정보를 얻을 수 있습니다 .


55
jQuery를 사용하는 경우 인라인 onclick 속성을 사용하는 이유는 무엇입니까?
nnnnnn

3
@BradleyFlood-그는 어떻게 대신 했습니까? 우리 같은 초보자들은 알고 싶어?
MarcoZen

2
@MarcoZen BradleyFlood는 "예 ::"라는 문구가 인라인 onclick 속성을 사용하는 것이 몇 가지 가능한 방법 중 하나라는 것을 의미한다고 생각합니다. 실제로 더 많은 jQuery와 같은 것은 .on ( 'click', submitDetailsForm)을 사용하는 것입니다.
Jan Kukacka

@JanKukacka-주목했다. 감사.
MarcoZen

71

기존 양식이 있으면 이제 jquery와 함께 작동해야합니다. 이제 ajax / post를 사용하십시오.

  • 제출 양식에 매 달리십시오-양식의 이벤트
  • 제출의 기본 기능 방지
  • 자신의 일을

    $(function() {
        //hang on event of form with id=myform
        $("#myform").submit(function(e) {
    
            //prevent Default functionality
            e.preventDefault();
    
            //get the action-url of the form
            var actionurl = e.currentTarget.action;
    
            //do your own request an handle the results
            $.ajax({
                    url: actionurl,
                    type: 'post',
                    dataType: 'application/json',
                    data: $("#myform").serialize(),
                    success: function(data) {
                        ... do something with the data...
                    }
            });
    
        });
    
    });

위해서는, 유의하시기 바랍니다 serialize()위의 예에서 일할 기능, 모든 양식 요소는 한 필요 name속성이 정의.

양식의 예 :

<form id="myform" method="post" action="http://example.com/do_recieve_request">

<input type="text" size="20" value="default value" name="my_input_field">
..
.
</form>

@PtF-이 샘플에서 POST를 사용하여 데이터가 제출되므로, 다음을 통해 데이터에 액세스 할 수 있습니다.

 $_POST['dataproperty1'] 

여기서 dataproperty1은 json의 "변수 이름"입니다.

CodeIgniter를 사용하는 경우 샘플 구문은 다음과 같습니다.

 $pdata = $this->input->post();
 $prop1 = $pdata['prop1'];
 $prop1 = $pdata['prop2'];

양식 선택기를 재사용하는 이유는 무엇입니까? 양식 요소 자체를 재사용하지 않는 이유는 무엇입니까?
Slava Fomin II

예, 당신도 이렇게 할 수 있습니다 : <form id = "myform"onsubmit = "do_stuff ()">, 나중에 js 가로 드 / 지연되면 해당 기능을 사용할 수 없습니다 .. 문서에서 초기화하는 것으로 생각했습니다. 준비 .... 내가 같은 생각을하고 있는지 잘 모르겠습니다, 당신은 어디까지 설명 할 수 있습니까?
womd

1
"name"속성을 정의해야한다는 점을 강조해 주셔서 감사합니다
ccalboni

1
dataType : 'application / json'은 오류입니다. dataType : 'json'을 읽어야합니다. 위의 예와 같이 남아 있으면 구문 분석 오류가 발생합니다.
Hankster

@Hankster 네, json 이었지만 편집되었습니다 ... Hollander 확인 / 확인할 수 있습니까?
womd

68

jQuery에서는 다음을 선호합니다.

$("#form-id").submit()

그러나 다시 한 번, 해당 작업을 수행하기 위해 jQuery가 필요하지 않습니다. 일반 JavaScript 만 사용하십시오.

document.getElementById("form-id").submit()

1
@windmaomao 웹 페이지에 jQuery를 포함 시켰습니까? 그러나 jQuery 대신 $ jQuery를 사용해야 할 수도 있습니다. jQuery가 이미 포함되어 있지 않은 경우 일반 JS 솔루션을 사용하는 것이 좋습니다.
gernberg

1
@windmaomao 나는 같은 문제가있었습니다. 내 jQuery는 다른 모든 기능을 실행했지만 양식을 제출하지 않았습니다. document.getElementById 메소드를 사용하여 작동했습니다.
ChallengeAccepted

41

매뉴얼에서 : jQuery Doc

$("form:first").submit();

3
첫 번째 양식을 찾는 것보다 "id"로 양식을 제출하고 제출하는 것은 타자입니다. 그러나 한 번에 하나의 양식 만 있으면 완벽하게 작동합니다.
Chintan Thummar

22


누군가가 사용하는 경우 정보

$('#formId').submit();

이런 식으로하지 마십시오

<button name = "submit">

submit ()이 이렇게 작동하지 않는다는 것을 알게 되려면 많은 시간이 걸렸습니다.


1
키워드 "sumit"의 오타는 오타가 의도하지 않았거나 문제와 관련이 있는지 확실하지 않습니다. "submit"jquery 양식 submit ()을 엉망으로 만드는 버튼을 의미 합니까? 또는 문제가 표준 대신 버튼 이름을 제출 했다는 의미 type="submit"입니까?
Daryn

저의 의도는이 질문에 대답하는 것이 아니라이 문제에 직면 한 사람들에게 알리는 것이 었습니다. 제출하기 전에 onclick 이벤트를 사용하여 입력을 확인했기 때문에 문제가 유형이 정의되지 않은 버튼 이름과 관련이 있다고 생각합니다. type = submit 인 경우 onclick 이벤트 발생없이 form submit을 작성하십시오.
AZ Soft

16

jquery를 사용하여 양식을 제출할 때 사용하십시오. 여기 링크 http://api.jquery.com/submit/

<form id="form" method="post" action="#">
    <input type="text" id="input">
    <input type="button" id="button" value="Submit">
</form>

<script type="text/javascript">
$(document).ready(function () {
    $( "#button" ).click(function() {
        $( "#form" ).submit();
    });
});
</script>

2
이것은 오래된 게시물이지만 button양식이 제출되지 않도록 버튼에 유형 을 추가하는 것이 좋습니다 (모든 브라우저가 유형이없는 버튼을 동일한 방식으로 처리하는 것은 아닙니다).
Mikey

@Mikey 제안에 감사드립니다.
Chintan Thummar

14

이것은 프리 로더와 함께 폼을 전송합니다 :

var a=$('#yourform').serialize();
$.ajax({
    type:'post',
    url:'receiver url',
    data:a,
    beforeSend:function(){
        launchpreloader();
    },
    complete:function(){
        stopPreloader();
    },
    success:function(result){
         alert(result);
    }
});

임의의 방법으로 http://www.jackart4.com/article.html 을 사용하여 양식 데이터 게시물을 수정하는 방법이 있습니다 .


업데이트 된 링크를 게시 할 수 있습니까? 위의 링크는 더 이상 작동하지 않습니다.
Chris22


12

양식에 제출 이벤트 리스너를 이미 설치 한 경우, innner 호출 submit ()

jQuery('#<form-id>').submit( function(e){ 
    e.preventDefault();
    // maybe some validation in here
    if ( <form-is-valid> ) jQuery('#<form-id>').submit();
});

이 양식의 제출 이벤트에 대해 새 이벤트 리스너를 설치하려고하면 작동 하지 않습니다 (실패). 따라서 HTML 요소 자체 (jQquery에서 랩 해제)에 액세스 하고이 요소에서 직접 submit ()을 호출해야합니다.

    jQuery('#<form-id>').submit( function(e){ 
      e.preventDefault();
      // note the [0] array access:
      if ( <form-is-valid> ) jQuery('#<form-id>')[0].submit();
    });


7
jQuery("a[id=atag]").click( function(){

    jQuery('#form-id').submit();      

            **OR**

    jQuery(this).parents("#form-id").submit();
});

7

Internet Explorer에는 동적으로 작성된 양식에 문제가 있습니다. 이와 같이 작성된 양식은 IE (9)에 제출되지 않습니다.

var form = $('<form method="post" action="/test/Delete/">' +
             '<input type="hidden" name="id" value="' + myid + '"></form>');
$(form).submit();

IE에서 작동하게하려면 양식 요소를 만들고 제출하기 전에 첨부하십시오.

var form = document.createElement("form");
$(form).attr("action", "/test/Delete")
       .attr("method", "post");
$(form).html('<input type="hidden" name="id" value="' + myid + '" />');
document.body.appendChild(form);
$(form).submit();
document.body.removeChild(form);

예제 1과 같이 양식을 작성한 후 첨부하면 작동하지 않습니다. IE9에서는 JScript 오류가 발생합니다. DOM Exception: HIERARCHY_REQUEST_ERR (3)

Tommy W의 소품 @ https://stackoverflow.com/a/6694054/694325


7

솔루션은 지금까지 양식의 ID를 알아야합니다.

이 코드를 사용하여 ID를 몰라도 양식을 제출하십시오.

function handleForm(field) {
    $(field).closest("form").submit();
}

예를 들어 버튼의 클릭 이벤트를 처리하려는 경우

$("#buttonID").click(function() {
    handleForm(this);    
});

6

버튼이 양식 태그 사이에 있으면이 버전을 선호합니다.

$('.my-button').click(function (event) {
    var $target = $( event.target );
    $target.closest("form").submit();
});


4

동적 양식에 대한 IE 트릭 :

$('#someform').find('input,select,textarea').serialize();

3

내 접근 방식이 약간 다름 버튼을 제출 버튼으로 변경 한 다음 클릭

$("#submit").click(function(event) {
$(this).attr('type','submit');
$(this).click();
});

2
function  form_submit(form_id,filename){
    $.post(filename,$("#"+form_id).serialize(), function(data){
        alert(data);
    });
}

AJAX를 통해 주어진 파일 이름에 양식 데이터를 게시합니다.


1

모든 솔루션에 대해 코드를 추가 할 필요가 없도록 일반적인 솔루션을 권장합니다. jquery 양식 플러그인 (http://jquery.malsup.com/form/)을 사용하여이 코드를 추가하십시오.

$(function(){
$('form.ajax_submit').submit(function() {
    $(this).ajaxSubmit();
            //validation and other stuff
        return false; 
});

});

1

당신은 이렇게 할 수 있습니다 :

$('#myform').bind('submit', function(){ ... });

-2

또한 Ajax를 통해 (실제로 제출하지 않고) 양식을 제출하기 위해 다음을 사용했습니다.

  jQuery.get("process_form.php"+$("#form_id").serialize(), {}, 
    function() {
      alert("Okay!"); 
    });

3
이것은 submit ()과 같은 것이 아닙니다. 당신은 GET을 사용하고, POST 의미를 사용) (제출 한가지
스콧 Evernden
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.