表单允许客户端的用户以标准格式向服务器提交数据。表单的创建者为了收集所需数据,使用了各种控件设计表单如 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. pandas入门——loc与iloc函数

    oc与iloc函数 loc函数 import pandas as pd import numpy # 导入数据 df = pd.read_csv(filepath_or_buffer="D: ...

  2. 6. 集成学习(Ensemble Learning)算法比较

    1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random ...

  3. Base64与MD5的区别

    Base64和MD5都可用于做信息的简单加密,两者的简单差别如下: Base64 可逆性. 可以将图片等二进制文件转换为文本文件. 可以把非ASCII字符的数据转换成ASCII字符,避免不可见字符. ...

  4. 微信web开发者工具同时打开两个小程序项目

    在写小程序时,想要一边参考别人的Demo一边做,但是微信web开发者工具无法同时开两个实例,怎么办? 单个软件实例来回切换打开的项目太麻烦,一种办法是同时下载[微信web开发者工具]和[微信web开发 ...

  5. C语言 · 删除重复元素

    算法提高 11-2删除重复元素   时间限制:10.0s   内存限制:256.0MB      问题描述 为库设计新函数DelPack,删除输入字符串中所有的重复元素.不连续的重复元素也要删除. 要 ...

  6. Linux shell while

    sh count=1 while [ $count -le 5 ]; do echo 1234567890abcdefghqwertyuiopdasdk > /dev/ttyS1 & e ...

  7. DLL接口的实现(虚函数)

    DLL接口的实现(虚函数) 我们在c++编程过程中往往要用到各种不同形式的程序库,这些库的发布方式有动态库和静态库.对于静态类库,设计良好的静态类库能实现功能上的隔离,无法避免类库实现必须重新编译.链 ...

  8. Github ——转

    Github 简明教程 分类 编程技术 如果你是一枚Coder,但是你不知道Github,那么我觉的你就不是一个菜鸟级别的Coder,因为你压根不是真正Coder,你只是一个Code搬运工. 但是你如 ...

  9. webpack7--css压缩成单独的css文件

    先看下下面的图片: 我们可以看到,通过Webpack打包后,默认CSS是通过 内部样式表 写入的.我们如何把压缩后的CSS单独导出为CSS 呢? 1.安装 extract-text-webpack-p ...

  10. Navi.Soft31.WinCE框架.开发手册(含下载地址)

    1.概述 1.1应用场景 随着物联网的普及,越来越多的制造商对货品从原料配备,加工生产,销售出库等环节的要求和把控越来越高.在此情况之下,传统的ERP软件已经无法满足现有的操作流程. 移动设备的应用, ...