使用jQuery提交表单

我想使用jQuery提交表单。 有人可以提供代码,演示或示例链接?

这取决于您是否正常提交表单或通过AJAX调用。 你可以在jquery.com上find很多信息,包括带有例子的文档。 通常要提交表单,请查看该网站的submit()方法。 对于AJAX ,有很多不同的可能性,尽pipe你可能想使用ajax()post()方法。 请注意, post()实际上只是一个使用简化且有限的接口来调用ajax()方法的简便方法。

一个关键的资源,我每天使用,你应该书签是如何jQuery工作 。 它有使用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()请求来处理错误等。

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

你通常会在一个函数内调用它。

例如:

 <input type='button' value='Submit form' onClick='submitDetailsForm()' /> <script language="javascript" type="text/javascript"> function submitDetailsForm() { $("#formId").submit(); } </script> 

你可以在Jquery网站上获得更多的信息。

在jQuery中,我更喜欢以下内容:

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

但是,再一次,你真的不需要jQuery来执行这个任务 – 只需使用常规的JavaScript:

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

当你有一个现有的表单,现在应该使用jQuery的 – Ajax /后现在你可以:

  • 挂在你的表格提交事件
  • 防止提交的默认function
  • 做你自己的东西

     $(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中的“variables名称”。

这里是使用CodeIgniter的示例语法:

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

从手册: jQuery Doc

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

这将发送一个预加载器的forms:

 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进行表单数据改写;

请注意,如果您已经为您的表单安装了一个提交事件侦听器,那么调用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(); }); 

您也可以使用jQuery表单插件提交使用ajax以及:

http://malsup.com/jquery/form/

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

查看活动/提交 。

 jQuery("a[id=atag]").click( function(){ jQuery('#form-id').submit(); **OR** jQuery(this).parents("#form-id").submit(); }); 

请注意,在Internet Explorer中,dynamic创build的表单存在问题。 这样创build的表单不会在IE(9)中提交:

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

为了让它在IE中工作,创build表单元素并在提交之前附加它,如下所示:

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

创build类似于示例1的表单,然后附加它将不起作用 – 在IE9中,它会抛出JScript错误DOM Exception: HIERARCHY_REQUEST_ERR (3)

支持Tommy W @ https://stackoverflow.com/a/6694054/694325

迄今为止的解决scheme要求您知道表单的ID。

使用此代码提交表单而无需知道ID:

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

例如,如果你想要处理一个button的点击事件,你可以使用

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

用它来提交你的表单使用jQuery。 这里是链接http://api.jquery.com/submit/

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

IEdynamicforms的技巧:

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

如果button位于表单标签之间,我更喜欢这个版本:

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

你可以像这样使用它:

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

要么

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

它会通过AJAX发布你的给定文件名的表单数据。

我推荐一个通用的解决scheme,所以你不必为每个表单添加代码。 使用jquery表单插件(http://jquery.malsup.com/form/)并添加此代码。;

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

你可以这样做:

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

我的方法略有不同将button改为提交button,然后单击

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

我也用下面的方式通过Ajax提交表单(实际上没有提交):

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