关于form表单onsubmi提交
表单允许客户端的用户以标准格式向服务器提交数据。表单的创建者为了收集所需数据,使用了各种控件设计表单如 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> </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提交的更多相关文章
- JavaScript 创建一个 form 表单并提交
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...
- 使用ajax方法实现form表单的提交(附源码)
写在前面的话 在使用form表单的时候,一旦点击提交触发submit事件,一般会使得页面跳转,页面间的跳转等行为的控制权往往在后端,后端会控制页面的跳转及数据传递,但是在某些时候不希望页面跳转,或者说 ...
- form表单js提交
form表单js提交 $('#form1').submit(); 延迟form表单提交 function submitcheck() { $('#light').css('display', ...
- 微信自带浏览器不支持form表单post提交方案解决
微信自带浏览器form表单post提交,Java控制后台获取不到值得解决方案: 第一种:把post改成get请求,但是改后另一个问题来了就是,数据不安全了,连接上都能看到,导致数据会流失,Java ...
- 利用 ajax自定义Form表单的提交方式
需求场景:有时候单纯的form表单无法向后端传递额外的参数 比如需要action传递js异步生成的参数 ,form表单默认的action就无法满足需求,这时就需要我们自定义form表单的提交方式. h ...
- form表单的提交方式
开发中表单提交是很常见的,表单的提交方式也多种方式. 1.使用submit按钮提交表单 <input type="submit"/> <!DOCTYPE htm ...
- 使用ajax方法实现form表单的提交
作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 写在前面的话 在使用form表单的时候,一旦点击提交触发submit ...
- JavaWeb学习总结(十一):Session解决form表单重复提交
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
- 基于form表单submit提交不跳转
方法一:target <html> <body> <form action="" method="post" target=&qu ...
随机推荐
- 【Tensorflow】设置显存自适应,显存比例
用惯了theano.再用tensoflow发现一运行显存就满载了,吓得我吃了一个苹果. 用天朝搜索引擎毛都搜不到,于是FQ找了下问题的解决方法,原来有两种 按比例 config = tf.Config ...
- JIRA python篇之统计产品尚未解决的bugs
[本文出自天外归云的博客园] 通过python中的jira类我们可以方便的操作jira,获取一些我们想要再加工的信息. 一些通过JIRA的JTL查询语句不方便直接搜索的过滤条件可以通过JIRA的pyt ...
- 问题-MethodAddress返回NIL?MethodAddress与published的关系?
问题现象:有位朋友(397085381)在Q群里问“为什么书上的可以访问,而自己写的代码访问时为nil” 问题原因:因为要用“Self.MethodAddress('Test')”访问,方法必须放在“ ...
- sqlserver 目录名称无效解决办法
问题描述: 1.sqlserver 打开表提示:目录名称无效 2.在执行sql语句时提示:在执行批处理时出现错误.错误消息为: 目录名无效 3.所有的数据库都存在1跟2的问题 问题分析: 1.操作系统 ...
- ssm框架结合axis2实例步骤
本文亲测: 1.从官网下载axis2相关api,地址是:http://axis.apache.org/axis2/java/core/download.html,我下载的是axis2-1.7.6-bi ...
- android开发——从相冊中选择图片不裁剪
转载请注明出处:http://blog.csdn.net/zhoubin1992/article/details/46864777 问题: 在郭神的第一行代码中,第8章的从相冊中选择图片这块,从相冊选 ...
- C语言 · 分分钟的碎碎念
算法提高 分分钟的碎碎念 时间限制:1.0s 内存限制:256.0MB 问题描述 以前有个孩子,他分分钟都在碎碎念.不过,他的念头之间是有因果关系的.他会在本子里记录每一个念头,并用 ...
- CycleGAN 各种变变变
转载自 简单介绍了一下GAN和DCGAN的原理.以及如何使用Tensorflow做一个简单的生成图片的demo. Ian Goodfellow对GAN一系列工作总结的ppt,确实精彩,推荐:独家 | ...
- Extjs js 产生Guid或者UUID
Ext.data.IdGenerator.get('uuid').generate() 结果:a9c4efb8-06c9-4c2e-8a70-bb36a69e053e 更多介绍:http://docs ...
- mssqlserver获取表说明和行数
SELECT a.*,t.rows FROM ( ) ) AS a left join (, )) ) AS t ON a.表名=t.name