简述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 相关文章推荐
jquery的颜色选择插件实例代码
Oct 02 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
Apr 19 Javascript
捕获键盘事件(且兼容各浏览器)
Jul 03 Javascript
一个不错的字符串转码解码函数(自写)
Jul 31 Javascript
js仿苹果iwatch外观的计时器代码分享
Aug 26 Javascript
详解javascript中的事件处理
Nov 06 Javascript
鼠标悬停小图标显示大图标
Jan 22 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
Dec 01 Javascript
webpack配置之后端渲染详解
Oct 26 Javascript
JS实现的简单下拉框联动功能示例
May 11 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
Aug 10 Javascript
JavaScript find()方法及返回数据实例
Apr 30 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 的 __FILE__ 常量
2007/01/15 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
PHP内核探索之解释器的执行过程
2015/12/22 PHP
Django中的cookie与session操作实例代码
2017/08/17 PHP
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
2007/01/09 Javascript
JS中setTimeout()的用法详解
2013/04/14 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
JS实现简单的图书馆享元模式实例
2015/06/30 Javascript
JS实现完全语义化的网页选项卡效果代码
2015/09/15 Javascript
javascript实现全角转半角的方法
2016/01/23 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
2017/07/12 jQuery
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
2017/11/22 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
2020/03/04 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
2018/02/24 Python
Python中的上下文管理器和with语句的使用
2018/04/17 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
Python原始套接字编程实例解析
2020/01/29 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
采购主管工作职责
2013/12/12 职场文书
活动策划邀请函
2014/02/06 职场文书
公司总经理岗位职责
2014/03/15 职场文书
学校周年庆活动方案
2014/08/22 职场文书
诉讼和解协议书
2016/03/23 职场文书
导游词之香港-太平山顶
2019/10/18 职场文书
MySQL 聚合函数排序
2021/07/16 MySQL
SQL Server实现分页方法介绍
2022/03/16 SQL Server
PO模式在selenium自动化测试框架的优势
2022/03/20 Python