简述JavaScript提交表单的方式 (Using JavaScript Submit Form)


Posted in Javascript onMarch 18, 2016

最近做项目遇到用Javascript提交表单的问题, 之前也做过几次, 但是不够全面, 这次总结出了几种用JavaScript提交表单的方式, 并且对此作出了比较, 选出了一种最适合此项目的方式。

我目前正在为Sun Communication Suite做一个创建用户的小型系统,大家都知道我们可以通过表单,Ajax 和链接来访问服务器, 最简单的方法就是使用连接, 例如:<a href=UserServlet?event=SEARCH_MAILING_LIST¤tPage=1&keyword="+keyword+"&searchBy="+searchBy+"&cn="+request.getAttribute("cn")+">First Page</a>, 把所有需要的数据全部写到超链接上, 如果你能够观察一下就会知道,在上边的链接中只有currentPage是变化的, 其他参数event, keyword, searbyBy和cn是不变的, 那么我就想到如果我能够把这些不变的参数封装到一个表单中, 当用户点击上面的超链接的时候我用JavaScript把这个表单提交, 那么我自然会访问到服务器。

表单:

<form name="pagination" id="pagination" action="UserServlet" method="get">
<input type="hidden" name="currentPage" value="1"/>
<Input type="hidden" name="cn" value="<%=request.getAttribute("cn")%>"/>
<input type="hidden" name="keyword" value="<%=request.getAttribute("keyword")%>"/>
<input type="hidden" name="searchBy" value="<%=request.getAttribute("searchBy")%>"/>
<input type="hidden" name="event" value="SEARCH_USER_FOR_MAILING_LIST">
</form>

在提交表单的过程中, 我只需要把参数currentPage传给JavaScript就好了,所以我就把上面的连接改为下边的形式:

<a href=# onclick=document.pagination.currentPage.value="+pages[j]+";document.pagination.submit();><span style='color: red;'>["+pages[j]+"]</span></a>

大家要注意一定要把document.pagination.currentPage.value="+pages[j]+";写在document.pagination.submit();的前边, 这样在用户提交表单之前, 参数currentPage就已经被修改为我们需要的数值。 这样我就完成了用连接来提交表单, 但是我有遇到了一个问题, 我需要试用上面的这段代码在很多页面, 如果我能统一的写一段JavaScript的话,就会方面我以后对整个系统做维护, 所以我几写了一个JavaScript的函数。

function submitForm(id,currentPage){
//var currentPage = document.pagination.currentPage.value;
//alert(currentPage);
//currentPage=100;
//var currentPage = document.pagination.currentPage.value;
//alert(currentPage);
document.pagination.currentPage.value=currentPage;
var form = document.getElementById(id);
form.submit();
}

然后我在超连接的onclick事件上条用这个函数:

<a href=# onclick=submitForm('pagination',"+pages[j]+")>["+pages[j]+"]</a>, 大家可以看到整段代码简洁了不少。

所以我总结了一下,用Javascript提交表单大概有两种写法(根据我目前的理解)

1. document.formName.submit();

2. var form = document.getElementById(id);

form.submit();

下次我想和大家分享一下用JNDI实现分页。我把这次的代码附在下边, 大家可以参考一下。

commons.js

function submitForm(id,currentPage){
//var currentPage = document.pagination.currentPage.value;
//alert(currentPage);
//currentPage=100;
//var currentPage = document.pagination.currentPage.value;
//alert(currentPage);
document.pagination.currentPage.value=currentPage;
var form = document.getElementById(id);
form.submit();
}

mailingListMemberAdd.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page import="java.util.LinkedList" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="my.gov.rmp.webmail.domain.User" %>
<%@ page import="my.gov.rmp.webmail.util.Pager" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Add Member to Mailing List:<%=request.getAttribute("cn")%></title>
<script type="text/javascript" src="../js/commons.js"></script>
</head>
<body>
<jsp:include page="../inc/admin/headerMail.jsp"/>
<div id="main"> 
<div id="contents" >
<h2>Add new members to mailing list: <span style="color:blue;"><%=request.getAttribute("cn")%></span></h2>
<form name="addMailingListMember" id="addMailingListMember" action="UserServlet" method="post">
<table cellspacing="5" cellpadding="5">
<% 
Pager pager =(Pager) request.getAttribute("pager");
int currentPage =pager.getCurrentPage();
int pageSize = pager.getPageSize();
int i=(currentPage-1)*pageSize;
LinkedList users = (LinkedList)request.getAttribute("users");
if(!users.isEmpty()){
%>
<tr style="font-weight:bold"><td>No.      
</td><td>UID:</td><td>gCode:</td><td>Givenname:</td><td>Surname:</td><td>Mail:</td><td>Description:</td></tr>
<%
for(Iterator iter = users.iterator();iter.hasNext();){
User user = (User) iter.next();
i++;
// Attributes attrs = user.getAttrs();
%>
<tr><td><%=i%>.  <input type="checkbox" name="uid" value="<%=user.getUid()%>" /></td>
<td width="15%"><%=user.getUid()%></td>
<td><%=user.getGCode()%></td>
<td><%=user.getGivenName()%></td>
<td><%=user.getSn()%></td>
<td width="30%"><%=user.getMail()%></td>
<td><%if(user.getDescription()==null||user.getDescription().length()==0){%>Not Set<%} else %><%=user.getDescription()%></td>
</tr> 
<%
}
%>
<input type="hidden" name="cn" value="<%=request.getParameter("cn")%>"/>
<input type="hidden" name="event" value="ADD_MAILING_LIST_MEMBER" />
<tr><td><button onclick="return selectAllCheckBoxs('uid');">Select All</button></td><td><button onclick="return deselectAllCheckBoxs('uid')">Deselect All</button></td><td></td><td><input type="submit" name="submit" value="Add to Mailing List"/></td></tr>
</table>
</form>
<hr>
<P STYLE="margin-top:-5px;"><strong>Pages:</strong>
<form name="pagination" id="pagination" action="UserServlet" method="get">
<input type="hidden" name="currentPage" value="1"/>
<Input type="hidden" name="cn" value="<%=request.getAttribute("cn")%>"/>
<input type="hidden" name="keyword" value="<%=request.getAttribute("keyword")%>"/>
<input type="hidden" name="searchBy" value="<%=request.getAttribute("searchBy")%>"/>
<input type="hidden" name="event" value="SEARCH_USER_FOR_MAILING_LIST">
</form>
<%
int[] pages = pager.getPages();
String keyword = request.getAttribute("keyword").toString();
String searchBy = request.getAttribute("searchBy").toString();
if(pager.isHasFirst()){
out.println("<a href=UserServlet?event=SEARCH_USER_FOR_MAILING_LIST¤tPage=1&keyword="+keyword+"&searchBy="+searchBy+"&cn="+request.getAttribute("cn")+">First Page</a>  ");
}
if(pager.isHasPrevious()){
out.println("<a href=# onclick=submitForm('pagination',"+(pager.getCurrentPage()-1)+")>Prev Page</a>  ");
}
for(int j=0;j<pages.length;j++){
if(pager.getCurrentPage()==pages[j]){
out.println("<a href=# onclick=document.pagination.currentPage.value="+pages[j]+";document.pagination.submit();><span style='color: red;'>["+pages[j]+"]</span></a>");
}else {
out.println("<a href=# onclick=submitForm('pagination',"+pages[j]+")>["+pages[j]+"]</a>");
}
}
if(pager.isHasNext()){
out.println("<a href=# onclick=submitForm('pagination',"+(pager.getCurrentPage()+1)+")>Next Page</a>  ");
}
if(pager.isHasLast()){
out.println("<a href=# onclick=submitForm('pagination',"+pager.getTotalPage()+")>Last Page</a>  ");
}
%>
</P>
<%
} else {
//make the mailing list member availabe when user are trying to re-run the search 
//request.setAttribute("members", members);
%>
<p>No results are matched your keyword or the user that you are looking for is already a member of this mailing list, please specify another keywork and <a href="<%=request.getContextPath()%>/admin/mailingListMemberSearch.jsp?cn=<%=request.getParameter("cn")%>">Search Again</a></p>
<% 
}
%>
</div>
</div>
</body>
</html>
Javascript 相关文章推荐
javascript document.images实例
May 27 Javascript
Javascript Select操作大集合
May 26 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
May 08 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
Nov 06 Javascript
使用React实现轮播效果组件示例代码
Sep 05 Javascript
学习vue.js条件渲染
Dec 03 Javascript
js实现简单的网页换肤效果
Jan 18 Javascript
Node.js安装配置图文教程
May 10 Javascript
解决easyui日期时间框ie的兼容的问题
Mar 01 Javascript
JavaScript中import用法总结
Jan 20 Javascript
JavaScript多种页面刷新方法小结
Apr 04 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
May 15 Javascript
Javascript的表单验证-揭开正则表达式的面纱
Mar 18 #Javascript
Javascript的表单验证-初识正则表达式
Mar 18 #Javascript
Javascript的表单验证-提交表单
Mar 18 #Javascript
Javascript的表单与验证-非空验证
Mar 18 #Javascript
悬浮广告方法日常收集整理
Mar 18 #Javascript
Js与Jq获取浏览器和对象值的方法
Mar 18 #Javascript
深入理解JavaScript程序中内存泄漏
Mar 17 #Javascript
You might like
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
PHP实现的蚂蚁爬杆路径算法代码
2015/12/03 PHP
php array_map使用自定义的函数处理数组中的每个值
2016/10/26 PHP
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
JavaScript 对Cookie 操作的封装小结
2009/12/31 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
jquery重新播放css动画所遇问题解决
2013/08/21 Javascript
可以浮动某个物体的jquery控件用法实例
2015/07/24 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
python-str,list,set间的转换实例
2018/06/27 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
纯css3实现的竖形无限级导航
2014/12/10 HTML / CSS
英国标准协会商店:BSI Shop
2019/02/25 全球购物
公司营业员的工作总结自我评价
2013/10/05 职场文书
校领导推荐信
2013/11/01 职场文书
开工庆典邀请函范文
2014/01/16 职场文书
大专生毕业的自我评价
2014/02/06 职场文书
2014年教研活动总结范文
2014/04/26 职场文书
法人授权委托书
2014/09/16 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js