表单数据校检方法 onsubmit()的使用?
在项目中为一个表单(from)编写onsubmit()脚本的时候,经常需要验证表单中数据的合法性
所以常会写道:<form action="/admin/addUser.do" method="post" onsubmit="validateForm();">,试图在validateForm()中return false来阻止表单的提交。实际上的效果是即使return false 表单 还是会提交。
后来发现 onsubmit="return validateForm()"就没有问题了 在表单中加上onsubmit="return false;"可以阻止表单提交
onsubmit=" checkForm(this);" 和 onsubmit="return checkForm(this);"的区别?
下面是简单的一小段代码: java代码: <form action="index.jsp" method="post" onsubmit="submitTest();">
<INPUT value="www">
<input type="submit" value="submit">
</form>
<SCRIPT LANGUAGE="JavaScript">
<!--
function submitTest() {
// 一些逻辑判断
return false;
}
//-->
</SCRIPT>
此种写法,点击submit按钮该表单照样会提交,为何?
原来onsubmit属性就像是<form>这个html对象的一个方法名,其值(一字符串)就是其方法体,默认返回true;和Java一样,在该方法体中你可以写任意多个语句,包括内置函数和自定义函数,如
java代码: onsubmit=" alert('haha'); // 内置函数 submitTest(); // 自定义函数 alert(this.tagName); // 用到了this关键词 ......(任意多条语句) return false; "
就相当于
Form.prototype.onsubmit = function() { alert('haha'); // 内置函数 submitTest(); // 自定义函数 alert(this.tagName); // 用到了this关键词 ......(任意多条语句) return false; };
这样的话你就覆写了(override)其默认方法(默认返回true)大家注意到方法体中可以用this这个关键词,这里即代表了<form>的对象实例。
经过这样的分析后,以上情况就不难理解了:
<form action="index.jsp" method="post" onsubmit="submitTest();"> 这样写,override方法的效果为:
Form.prototype.onsubmit = function() { submitTest(); };
在这里submitTest()虽然返回false,但我们只执行了此函数,没有对其结果进行任何处理。而
<form action="index.jsp" method="post" onsubmit="return submitTest();">
override方法的效果为:
Form.prototype.onsubmit = function() { return submitTest(); };
这样,我们利用到了它的返回值,达到了预期效果。
其实form中有一个方法是对form表单中的数据进行校验.但是需要点击submit按钮才能触发这个校验
<html>
<head>
<script>
function checkForm(form) {
if(form['nameId'].value == "") { alert("姓名不能为空!");
return false;
}
return true;
}
</script>
</head>
<body> <form id="formId" action="www.baidu.com" onsubmit="return checkForm(this)">
请输入姓名:<input type="text" id="nameId"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
2.在js中调用onsubmit方法
function checkForm(form){
if(form['o.NSfk'].value=="") {
alert("实付款为空!");
return false;
}
if(form['o.DFksj'].value=="") {
alert("收款日期为空!");
return false;
}
return true; }
function tijiao() {
var form = document.getElementById("productFormId");
if(form.onsubmit()==false) {
return;
}
form.submit(); }
注意:onsubmit事件在提交数据成功后触发,即在出发action之后触发
在javascript中定义一个函数:
function f(){
return false; } <form action="text.html" onsubmit="f()">
<input type="text" ............/> <input type="submit" value="点击提交"...../> </form> f()返回的是false为啥点击提交的时候还能跳到text.html?
解答:
onsubmit事件在提交数据成功后触发,你如果要阻止提交的话可以这样:
<input type="submit" value="点击提交" onclick="return f()" />
这样在提交前就阻止了点击事件
表单数据校检方法 onsubmit()的使用?的更多相关文章
- session_start()导致history.go(-1)返回时无法保存表单数据的解决方法
问题背景: 在填写完表单提交时,由于某个表单项可能填写的不合法,导致提交失败,返回表单页面.但返回后所有的表单都被清空了,重新填写比较麻烦,度娘解释说,是由于每个页面都调用了session_start ...
- django的FormView中,自定义初始化表单数据的曲折方法
这个技巧,主要是用于表单初始化及回显. 也就是说,如果用户的数据库里有数据,则要将相应的数据显示在表单里, 如果用户的数据库里没有数据,才会生成一个空白的表单给用户, 这样才显得专业塞! 而我面对的尴 ...
- jquery表单数据验证扩展方法
/** 表单数据验证 **/ $.fn.Validform = function () { var Validatemsg = ""; var Validateflag = tru ...
- 表单数据验证方法(二)——ASP.NET后台验证
昨天写了一下关于如何在前台快捷实现表单数据验证的方法,今天接着昨天的,把后台实现数据验证的方法记录一下.先说明一下哈,我用的是asp.net,所以后台验证方法也是基于.net mvc来做的. 好了,闲 ...
- Action 中获取表单数据的三种方式
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53138905 冷血之心的博客) Action 中获取表单提交数据 ...
- Servlet 响应 响应相关与重定向 请求 获取表单数据2种方法
一.HttpServletResponse (响应) 包括下面三个: 1.响应消息行 HTTP/1.1 200 OK 200是HTTP状态码, 代表请求已成功. (查httpservletres ...
- TableView 校检表
这俩天学习了tableView 校检表 主要就是通过一个方法来跟踪当前选中的行.下面将声明一个NSIndexPath 的属性来跟踪最后选中的行.这篇文章希望能给那些初学者带来学习的乐趣.不说了直接上代 ...
- Struts2中Action取得表单数据的几种方法
Struts2中Action取得表单数据的几种方法 Struts2中Action获得表单数据的几种方法struts2 Action获取表单传值 1.通过属性驱动式JSP: <form act ...
- ASP.NET MVC中在Action获取提交的表单数据方法总结 (4种方法,转载备忘)
有Index视图如下: 视图代码如下: <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Mas ...
随机推荐
- 后缀数组:SPOJ SUBST1 - New Distinct Substrings
Given a string, we need to find the total number of its distinct substrings. Input T- number of test ...
- [转载][HTML] 普通的DIV分层以及版透明效果
来源忘记哪的了,我稍微做了点修改,想了想还是挂了转载的标签,嗯嗯: <html> <head> <title>EXAMPLE</title> </ ...
- Rotate List —— LeetCode
Given a list, rotate the list to the right by k places, where k is non-negative. For example:Given 1 ...
- DIV+CSS布局问题:一个宽度不确定的DIV里面放三个水平对齐的DIV,左右两个DIV宽度固定为150px,中间那个DIV充满剩余的宽度
一个入门的DIV+CSS布局问题:一个宽度不确定的DIV里面放三个水平对齐的DIV,左右两个DIV宽度固定为150px,中间那个DIV充满剩余的宽度. 说明:代码非真实情况下使用,所以直接简单. 没耐 ...
- Nodejs in Visual Studio Code 10.IISNode
1.开始 Nodejs in Visual Studio Code 08.IIS : http://www.cnblogs.com/mengkzhaoyun/p/5410185.html 参考此篇内容 ...
- JavaScript中bind、call、apply函数用法详解
在给我们项目组的其他程序介绍 js 的时候,我准备了很多的内容,但看起来效果不大,果然光讲还是不行的,必须动手.前几天有人问我关于代码里 call() 函数的用法,我让他去看书,这里推荐用js 写服务 ...
- hdoj 4552 怪盗基德的挑战书【求前缀在字符串中出现的次数之和】
怪盗基德的挑战书 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Su ...
- Geometric Shapes (poj3449多边形相交)
题意:给你一些多边形的点,判断每个多边形和那些多边形相交,编号按照字典序输出 思路:枚举每个多边形的每条边看是否相交,这里的相交是包括端点的,关键是给你正方形不相邻两个点求另外两个点怎么求,长方形给你 ...
- Java Web应用的开发模式
一.概述 从互联网诞生的第一天起,web从一个简单的静态页面,发展到今天五花八门.令人眼花缭乱的复杂应用,大到企业级的web应用系统,小到简单的SPA管理系统.在硬件性能提升的同时,通过各种技术实现了 ...
- IntelliJ IDEA安装 一些配置
idea 配置修改 本篇 参考https://blog.liyang.io/234.html. 1.修改IDEA菜单的字体大小: 单击File | Project Structure菜单项,打开Pro ...