表单允许客户端的用户以标准格式向服务器提交数据。表单的创建者为了收集所需数据,使用了各种控件设计表单如 INPUT 或 SELECT。查看表单的用户只需填充数据并单击提交按钮即可向服务器发送数据。服务器上的脚本会处理这些数据。

表单由三个重要属性action,method,onsubmit。
action:规定当提交表单时,向何处发送表单数据。
method:规定如何发送表单数据。
onsubmit:当表单被提交时执行脚本。

页面提交表单的数据是不可信任的,js脚本验证作为辅助验证,嘿嘿,防君子不防小人。后台需要对表单提交数据判断。全部正确跳转到成功页,否则,跳转到辅助性的提示页(记录这些非法操作的用户)。

示例如下图所示:

主要讲述表单提交关于onsubmit那些事
一般方法:使用onsubmit="return check()"对表单的值进行验证。
对输入的姓名,手机号,备注进行验证。
示例如下图所示(check图一):

                                              check图一

也可以指定表单ID绑定onsubmit事件
示例如下图所示(check图二):

                                              check图二

这两个主要区别:
一、绑定事件的方式不同。check图二中蓝色方框处是这两种绑定事件的最大区别,当任一个判定条件不通过时阻止浏览器默认行为。
二、check图一中的“return false”和check图二中的“return”也是亮点哈。
check图一中的“return false”的作用是函数check()返回布尔值false,传给onsubmit中 return check(),阻止浏览器提交。 
check图二中的“return”的作用是当某个判断条件不符合时,return返回,不执行后面的。

关于js代码简单分析,如下:

var mform = {
// 获取ID
$: function(){
return document.getElementById(arguments[0]);
},
// 阻止浏览器默认行为
stopDefault: function(){
if(event && event.preventDefault){
event.preventDefault();
}
else{
window.event.returnValue = false;
}
},
// 绑定事件 elem指ID,type指事件类型,fn指函数
addEvent: function(elem,type,fn){
if(elem.addEventListener){
elem.addEventListener(type, fn, false);
}
else if(elem.attachEvent) {
elem.attachEvent("on" + type, fn);
}
else{
elem["on" + type] = fn;
}
},
// 设置元素的文本值
text: function(elem,str){
if(!!elem.innerText){
elem.innerText = str;
}
else if(!!elem.textContent){
elem.textContent = str;
}
},
// 过滤左右空格
trim: function(str){
return str.replace(/(^\s*)|(\s*$)/g, "");
},
// 判断是否为汉字,true时为汉字
isCNCharacter: function(str){
if(/.*[\u4e00-\u9fa5]+.*$/.test(str)){
return true;
}
else{
return false;
}
},
// 判断是否为手机号,true时为手机号
isTelNum: function(str){
if(/^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str)){
return true;
}
else {
return false;
}
},
// 初始化事件
init: function(){
var _this = this;
_this.check();
},
// 为表单绑定事件
check: function(){
var _this = this;
var name = _this.$("userName"),
nameErr = _this.$("userNameErr"),
tel = _this.$("tel"),
telErr = _this.$("telErr"),
remark = _this.$("remark"),
remarkErr = _this.$("remarkErr"),
kform = _this.$("kform");
_this.addEvent(kform,"submit",function(){
var nameVal = name.value,telVal = tel.value,remarkVal = remark.value;
if((!_this.isCNCharacter(nameVal)) || (!_this.isTelNum(telVal)) || (_this.trim(remarkVal).length < 6)){
_this.stopDefault();
}
if(_this.trim(nameVal).length===0){
_this.text(nameErr,"姓名不能为空!");
return;
}
else if(!_this.isCNCharacter(nameVal)){
_this.text(nameErr,"仅限中文名字!");
return;
}
else{
_this.text(nameErr,"");
}
if(_this.trim(telVal).length === 0){
_this.text(telErr,"手机号码不能为空!");
return;
}
else if(!_this.isTelNum(telVal)){
_this.text(telErr,"手机号码不正确!");
return;
}
else{
_this.text(telErr,"");
}
if(_this.trim(remarkVal).length < 6){
_this.text(remarkErr,"不能少于6个字!");
return;
}
});
}
} mform.init();

表单源码如下:

 <?php
$action = $_SERVER["PHP_SELF"]; $name = "";
$nameErr = "";
$isname = false;
$tel = "";
$telErr = "";
$istel = false;
$remark = "";
$remarkErr = "";
$isremark = false; if(isset($_POST["submit"])){
$name = $_POST["userName"];
$tel = $_POST["tel"];
$remark = $_POST["remark"]; if(empty($name)){
$nameErr = "姓名不能为空!";
} else if(!preg_match("/^[\x7f-\xff]+$/", $name)){
$nameErr = "仅限中文名字!";
}
else{
$isname = true;
} if(empty($tel)){
$telErr = "手机号码不能为空!";
} else if(!preg_match("/^1[3|4|5|6|7|8|9][0-9]{9}$/", $tel)){
$telErr = "手机号码不正确!";
}
else{
$istel = true;
} if(strlen($remark)<6){
$remarkErr = "不能少于6个字!";
}
else{
$isremark = true;
} if($isname && $istel && $isremark){
header("Location: result.php");
}
else{
// 记录用户信息
}
}
?> <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>表单提交</title>
<style>
*{margin:0px;padding:0px;color:#000;font-size:14px;line-height:20px;background: #fff;}
.kform{width: 600px; margin: 60px auto; border: 1px solid #999; padding: 20px;}
.kform .item{ margin-bottom: 10px; vertical-align: middle;}
.kform .item span{display: inline-block;width: 80px;text-align: right; margin-right: 10px; }
.kform .big span,.kform .big .err{vertical-align: top;}
.kform .item .txt{width: 180px; height: 30px; line-height: 30px; border: 1px solid #999; text-indent: 6px; vertical-align: middle;}
.kform .item .err{color: #f00; margin-left: 10px;}
.kform .item textarea{width: 300px; height: 80px; overflow: hidden; border: 1px solid #999;padding: 6px; resize: none;}
.kform .item .btn{ display: inline-block; padding: 10px 20px; background: #f60; color: #fff; border: none; border-radius: 3px; cursor: pointer;}
</style>
</head>
<body>
<form id="kform" class="kform" action="<?php echo $action; ?>" method="POST" >
<div class="item">
<span>姓名:</span>
<input id="userName" class="txt" type="text" name="userName" value="<?php echo !empty($name)?$name:''; ?>" maxLength="10" placeholder="中文姓名" />
<label id="userNameErr" class="err"><?php echo !empty($nameErr)?$nameErr:" "; ?></label>
</div>
<div class="item">
<span>电话:</span>
<input id="tel" class="txt" type="text" name="tel" value="<?php echo !empty($tel)?$tel:''; ?>" maxLength="11" placeholder="手机号码" />
<label id="telErr" class="err"><?php echo !empty($telErr)?$telErr:" "; ?></label>
</div>
<div class="item big">
<span>备注:</span>
<textarea id="remark" name="remark" placeholder="至少6个字" maxLength="100"><?php echo !empty($remark)?$remark:''; ?></textarea>
<label id="remarkErr" class="err"><?php echo !empty($remarkErr)?$remarkErr:" "; ?></label>
</div>
<div class="item">
<span>&nbsp;</span>
<input class="btn" name="submit" type="submit" value="确定" />
</div>
</form>
<script>
var mform = {
// 获取ID
$: function(){
return document.getElementById(arguments[0]);
},
// 阻止浏览器默认行为
stopDefault: function(){
if(event && event.preventDefault){
event.preventDefault();
}
else{
window.event.returnValue = false;
}
},
// 绑定事件 elem指ID,type指事件类型,fn指函数
addEvent: function(elem,type,fn){
if(elem.addEventListener){
elem.addEventListener(type, fn, false);
}
else if(elem.attachEvent) {
elem.attachEvent("on" + type, fn);
}
else{
elem["on" + type] = fn;
}
},
// 设置元素的文本值
text: function(elem,str){
if(!!elem.innerText){
elem.innerText = str;
}
else if(!!elem.textContent){
elem.textContent = str;
}
},
// 过滤左右空格
trim: function(str){
return str.replace(/(^\s*)|(\s*$)/g, "");
},
// 判断是否为汉字,true时为汉字
isCNCharacter: function(str){
if(/.*[\u4e00-\u9fa5]+.*$/.test(str)){
return true;
}
else{
return false;
}
},
// 判断是否为手机号,true时为手机号
isTelNum: function(str){
if(/^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str)){
return true;
}
else {
return false;
}
},
// 初始化事件
init: function(){
var _this = this;
_this.check();
},
// 为表单绑定事件
check: function(){
var _this = this;
var name = _this.$("userName"),
nameErr = _this.$("userNameErr"),
tel = _this.$("tel"),
telErr = _this.$("telErr"),
remark = _this.$("remark"),
remarkErr = _this.$("remarkErr"),
kform = _this.$("kform");
_this.addEvent(kform,"submit",function(){
var nameVal = name.value,telVal = tel.value,remarkVal = remark.value;
if((!_this.isCNCharacter(nameVal)) || (!_this.isTelNum(telVal)) || (_this.trim(remarkVal).length < 6)){
_this.stopDefault();
}
if(_this.trim(nameVal).length===0){
_this.text(nameErr,"姓名不能为空!");
return;
}
else if(!_this.isCNCharacter(nameVal)){
_this.text(nameErr,"仅限中文名字!");
return;
}
else{
_this.text(nameErr,"");
}
if(_this.trim(telVal).length === 0){
_this.text(telErr,"手机号码不能为空!");
return;
}
else if(!_this.isTelNum(telVal)){
_this.text(telErr,"手机号码不正确!");
return;
}
else{
_this.text(telErr,"");
}
if(_this.trim(remarkVal).length < 6){
_this.text(remarkErr,"不能少于6个字!");
return;
}
});
}
} mform.init();
</script>
</body>
</html>

关于form表单onsubmi提交的更多相关文章

  1. JavaScript 创建一个 form 表单并提交

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  2. 使用ajax方法实现form表单的提交(附源码)

    写在前面的话 在使用form表单的时候,一旦点击提交触发submit事件,一般会使得页面跳转,页面间的跳转等行为的控制权往往在后端,后端会控制页面的跳转及数据传递,但是在某些时候不希望页面跳转,或者说 ...

  3. form表单js提交

    form表单js提交      $('#form1').submit(); 延迟form表单提交 function submitcheck() { $('#light').css('display', ...

  4. 微信自带浏览器不支持form表单post提交方案解决

      微信自带浏览器form表单post提交,Java控制后台获取不到值得解决方案: 第一种:把post改成get请求,但是改后另一个问题来了就是,数据不安全了,连接上都能看到,导致数据会流失,Java ...

  5. 利用 ajax自定义Form表单的提交方式

    需求场景:有时候单纯的form表单无法向后端传递额外的参数 比如需要action传递js异步生成的参数 ,form表单默认的action就无法满足需求,这时就需要我们自定义form表单的提交方式. h ...

  6. form表单的提交方式

    开发中表单提交是很常见的,表单的提交方式也多种方式. 1.使用submit按钮提交表单  <input type="submit"/> <!DOCTYPE htm ...

  7. 使用ajax方法实现form表单的提交

    作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 写在前面的话 在使用form表单的时候,一旦点击提交触发submit ...

  8. JavaWeb学习总结(十一):Session解决form表单重复提交

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

  9. 基于form表单submit提交不跳转

    方法一:target <html> <body> <form action="" method="post" target=&qu ...

随机推荐

  1. WebSocket通信协议 API简介

    WebSocket是html5新增加的一种通信协议,目前流行的浏览器都支持这个协议,例如 Chrome,Safari,Firefox,Opera,IE等等,对该协议支持最早的应该是chrome,从ch ...

  2. linux nexus bulid

    1. 将下载好的nexus-2.5.1-bundle.tar.gz包,用FTP工具传至服务器上. 2. 解压安装包 解压命令: ? 1     tar -zvxf nexus-2.5.1-bundle ...

  3. [转载]生活在 Emacs 中

    Brian Bilbrey2002 年 8 月 20 日发布 教程简介 本教程讲什么? Emacs 是一个流行的无模式文本编辑器,有许多强大的功能.本教程将教您使用 Emacs 的基础知识.为了让您很 ...

  4. java中ThreadExecutor使用注意

    如果使用了submit(Runnable task) 就会出现这种情况,任何的错误信息都出现不了! 这是因为使用submit(Runnable task) 的时候,错误的堆栈信息跑出来的时候会被内部捕 ...

  5. order by name 注入

    order by name id id是一个注入点 可以利用if语句进行注入 order by name ,if(1=1,1,select 1 from information_schema.tabl ...

  6. python -- numpy 基本数据类型,算术运算,组合,分割 函数

    0 NumPy数组 NumPy数组:NumPy数组是一个多维数组对象,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的元数据 NumPy数组属性: ndim(纬数,x,y 2),sha ...

  7. [加密]展讯secureboot方案

    Secure Boot方案介绍及实施流程 转自网络 1. Secure boot概述 本文档主要是secure boot方案的介绍和说明,其内容会涵盖以下方面:secure boot的目的和介绍.技术 ...

  8. ubuntu linux下建立stm32开发环境: GCC安装以及工程Makefile建立

    http://blog.csdn.net/embbnux/article/details/17616809

  9. 【linux】——一个小程序

    利用工作之余为小伙伴写了份作业,关于进程间通信的.题目如下: 父进程从键盘上接受1000个数据,对其求和sum1,子进程对这1000个数平方和sum2,结果传给父进程,父进程将sum1+sum2后,打 ...

  10. HwPointEventFilter: do not support AFT because of no config华为手机进入工程菜单

    在调试时应用报出HwPointEventFilter: do not support AFT because of no config 是因为华为系统里设置了不打印log 解决方法是在拨号界面输入*# ...