简述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的严格模式strict mode详细介绍
Jun 06 Javascript
纯Javascript实现ping功能的方法
Mar 20 Javascript
js正则表达式匹配数字字母下划线等
Apr 14 Javascript
基于jquery实现的树形菜单效果代码
Sep 06 Javascript
jQuery简单实现提交数据出现loading进度条的方法
Mar 29 Javascript
jQuery+HTML5实现弹出创意搜索框层
Dec 29 Javascript
BootStrap便签页的简单应用
Jan 06 Javascript
jQuery实现鼠标响应式淘宝动画效果示例
Feb 13 jQuery
vue+element实现批量删除功能的示例
Feb 28 Javascript
react koa rematch 如何打造一套服务端渲染架子
Jun 26 Javascript
JS实现放烟花效果
Mar 10 Javascript
Openlayers绘制地图标注
Sep 28 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
PHP脚本的10个技巧(6)
2006/10/09 PHP
php 编写安全的代码时容易犯的错误小结
2010/05/20 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
PHP实现将textarea的值根据回车换行拆分至数组
2015/06/10 PHP
Prototype Selector对象学习
2009/07/23 Javascript
jquery中$.post()方法的简单实例
2014/02/04 Javascript
jquery如何根据值设置默认的选中项
2014/03/17 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
Python实现分割文件及合并文件的方法
2015/07/10 Python
详解基于django实现的webssh简单例子
2018/07/17 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
python支付宝支付示例详解
2019/08/22 Python
wxPython实现带颜色的进度条
2019/11/19 Python
python 初始化一个定长的数组实例
2019/12/02 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
前端canvas水印快速制作(附完整代码)
2019/09/19 HTML / CSS
吉列剃须刀英国官网:Gillette英国
2019/03/28 全球购物
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
英国排名第一的停车场运营商:NCP
2019/08/26 全球购物
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
八年级生物教学反思
2014/01/22 职场文书
小学数学教学反思
2014/02/02 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
2015年党性分析材料
2014/12/19 职场文书
事业单位年度考核个人总结
2015/02/12 职场文书
个性发展自我评价2015
2015/03/09 职场文书
2015年度班主任自我评价
2015/03/11 职场文书
高考升学宴主持词
2019/06/21 职场文书
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS
Spring Boot优化后启动速度快到飞起技巧示例
2022/07/23 Java/Android