2009-07-29 105 views

回答

31

從手冊:jQuery Doc

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

這是連擊的「ID提交表單」比找到的第一個表單並提交。然而,將作品完美,如果只有一次一個表格。 – ChintanThummar 2017-05-23 09:39:26

98

你將不得不使用$("#formId").submit()

您通常會在函數中調用此函數。

例如:

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

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

你可以在此對Jquery website的更多信息。

+45

如果您使用的是jQuery,爲什麼要使用內聯onclick屬性? – nnnnnn 2013-05-05 07:05:29

+6

「例如:」 – 2014-06-20 05:57:08

+1

@BradleyFlood - 他應該怎麼做呢?像我們這樣的新手想知道嗎? – MarcoZen 2017-07-21 15:40:10

380

這取決於你是否正常,或通過一個AJAX調用提交表單。您可以在jquery.com找到大量信息,包括帶有示例的文檔。要正常提交表單,請查看該網站的submit()方法。對於AJAX,有許多不同的可能性,儘管您可能想要使用ajax()post()方法。請注意,post()實際上只是一種方便的方式,可以通過簡化且有限的界面調用ajax()方法。

我每天使用的關鍵資源是書籤How jQuery Works。它有關於使用jQuery的教程,左邊的導航可以訪問所有的文檔。

實例:

普通

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

AJAX

$('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 2014-07-02 21:56:57

+1

如果我有一些數據準備好我想在提交之前添加到發佈請求(不是ajax,表單提交發布請求),我該怎麼做? – 2014-07-11 08:07:04

+1

@AlexanderSupertramp - 在上面的例子中,數據是以url編碼的形式參數發送的。您可以簡單地將數據附加爲其他表單參數。 `$('form#MyForm')。serialize()+'&newData ='+ newData +'&moreData ='+ moreData`。注意:後兩個可能需要使用`encodeURIComponent()`進行網址編碼。或者 - 您可以更改爲在兩端都使用JSON編碼,但是您需要將表單數據與您的額外數據一起放入JavaScript數據結構中並將其序列化。在這種情況下,您可能會在表單中使用`serializeArray`併合並其他數據。 – tvanfosson 2014-07-11 14:42:18

60

在jQuery中,我寧願以下幾點:

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

但話又說回來,你真的不需要jQuery來執行任務 - 只要使用正規的JavaScript:

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

我也用下面的提交表單(實際上沒有提交它)通過Ajax:

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

我推薦一個通用的解決方案,因此您不必爲每個表單添加代碼。使用jquery表單插件(http://jquery.malsup.com/form/)並添加此代碼。

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

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

將張貼在通過AJAX您指定的文件名的表單數據。

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

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

      **OR** 

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

,你可以做這樣的:

$('#myform').bind('submit', function(){ ... }); 
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)

道具托米瓦@https://stackoverflow.com/a/6694054/694325

12

這將發送形式預加載:

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

i'have一些技巧,使一形式的數據後重整與隨機方法http://www.jackart4.com/article.html

4

IE特技動態形式:

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

目前爲止的解決方案要求您瞭解表單的ID。

使用此代碼提交表單,而無需知道該ID:

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

例如,如果你想處理一個按鈕的點擊事件,你可以使用

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

你可以這樣使用它:

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

document.formName.submit(); 
46

,當你有一個現有的形式,即現在應該用jQuery工作 - AJAX /後現在你可以:

  • 掛到提交 - 您的形式
  • 的情況下防止提交的默認功能
  • 做你自己的東西

    $(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中的「variable-name」。

這裏樣本語法,如果你使用的CodeIgniter:

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

使用它使用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> 
11

需要注意的是,如果你已經安裝了你的形式提交事件偵聽器,將腸子調用提交()

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

不會的工作,因爲它試圖爲此表單的提交事件安裝新的事件偵聽器(失敗)。所以,你必須存取權限的HTML元素本身(從jQquery拆開包裝),並調用提交()這個元素直接:

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

如果按鈕位於表單標籤之間,我更喜歡這個版本:

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

我的做法略有不同的變化將按鈕提交按鈕,然後單擊

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