使用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以及:
$("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!"); });