JS 有趣的eval优化输入验证
//eval就是计算字符串【可以放任何js代码】里的值
、 var str1='12+3';
eval(str1);// 、 var str2='[1,2,3]';
eval(str2[]);// 、eval('alert("abc")');//弹出abc 、var str="function show(){alert('love you');}";
eval(str);
show(); 、eval--->json字符串

1、如果对如上用户名,邮箱验证输入验空,传统的做法
var flag = true;
if (document.getElementById("txtName").value == "") {
//写入错误信息
flag = false;
}
if (document.getElementById("txtEmail").value == "") {
//写入错误信息
flag = false;
}
return flag
}
-->但是如何有很多需要验证的字段,if会有很多,而且一点都不雅观
2、平静心情,来看看html
用户名:<input type="text" id="txtName" name="name" /><br />
邮箱:<input type="text" id="txtEmail" name="email" value="" /><br />
<input type="button" value="验证" onclick="validateForm()" />
2.1 看如下代码
function validateForm() {
var nameV = form1.name.value()
alert(nameV);// 如果我们在文本框输入"短发美女",弹出来肯定是"短发美女"
//继续
nameV=eval('form1.name.value()');
alert(nameV);//同样也是 "短发美女"
}
3、封装
function FormField(fieldName, fieldDesc) {//将变化者 属性字段和描述封装起来
this.fieldName = fieldName;
this.fieldDesc = fieldDesc;
}
String.prototype.MyTrim = function () {//去除首尾空格
return this.replace(/^\s+|\s+$/g, '');
}
function validateForm() {
var oUl = document.getElementById("ulError");
oUl.innerHTML = "";
var list = new Array
(
//以后只需要验证为空的 只需要在数组中增加一个对象即可
new FormField("name", "用户名"),
new FormField("email", "邮箱")
);
var flag = true;
for (var i = 0; i < list.length; i++) {
var fv = eval("form1." + list[i].fieldName + ".value");//执行eval运算
if (fv == null ||!fv.MyTrim()) {
//记录错误信息
// var liError = "<li>" + list[i].fieldDesc + "不能为空</li>";
// oUl.innerHTML+=liError;
var liError = document.createElement("li");
liError.innerHTML =list[i].fieldDesc + "不能为空";
oUl.appendChild(liError);
flag = false;
}
}
}
JS 有趣的eval优化输入验证的更多相关文章
- JS学习笔记12_优化
一.可维护性优化 1.添加注释 注释能够增强代码的可读性以及可维护性,当然,理想情况是满满的注释,但这不太现实.所以我们只需要在一些关键的地方添上注释: 函数和方法:尤其是返回值,因为直接看不出来 大 ...
- 在js中实现邮箱格式的验证
在js中实现邮箱格式的验证 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><htm ...
- 客户端JS性能的一些优化的小技巧
下面是一些关于客户端JS性能的一些优化的小技巧:1.[顶]关于JS的循环,循环是一种常用的流程控制.JS提供了三种循环:for(;;). while().for(in).在这三种循环中 for(in) ...
- javascript设计模式实践之策略模式--输入验证
策略模式中的策略就是一种算法或者业务规则,将这些策略作为函数进行封装,并向外提供统一的调用执行. 先定义一个简单的输入表单: <!DOCTYPE html> <html> &l ...
- js资源加载优化
互联网应用或者访问量大的应用,对js的加载优化是不可少的.下面记录几种优化方法 CDN + 浏览器缓存 CDN(content delivery network)内容分发网络, 最传统的优化方式.其 ...
- AngularJS学习之输入验证
1.AngularJS可以验证表单和控件可以验证输入的数据: 2.输入验证:客户端不能确保用户输入数据的安全,所以服务器端的数据验证也是必须的: 3.应用实例: <! DOCTYPE html& ...
- js限制文本框只能输入整数或者带小数点[转]
这篇文章是关于js限制文本框只能输入整数或者带小数点的内容,以下就是该内容的详细介绍. 做表单验证的时候是否会碰到验证某个输入框内只能填写数字呢,仅允许输入整数数字或者带小数点的数字.下面这段代码也许 ...
- js简单验证码的生成和验证
如何用js生成简单验证码,并验证是否正确的方法 1.html页面如下 <div> <table border="0" cellspacing="5&qu ...
- formValidator输入验证、异步验证实例 + licenseImage验证码插件实例应用
实例技术:springmvc 实现功能:完整用户登录流程.输入信息规则校验.验证码异步校验. 功能清单: 1.springmvc控制器处理get请求(/member/login.html),进行静态页 ...
随机推荐
- THUSC2019 退役记
Day -inf 这一个半月潜心搞文化课,把文化课的坑填上了不少,我文化课的底子真是薄啊 一年前没想过我还挺有希望进队的,最后还差点冲上 一年后说不定会发现我搞文化课也能搞得不错呢? 一切都是未知 t ...
- 洛谷 3203 HNOI2010 BOUNCE 弹飞绵羊
[题解] 这道题可以用Link-Cut Tree写.. 首先建立一个虚拟节点N+1,$i$与$N+1$连边表示$i$被弹飞了 对于修改操作,先$cut(i,min(n+1,i+k[i]))$,然后再$ ...
- python爬虫数据解析的四种不同选择器Xpath,Beautiful Soup,pyquery,re
这里主要是做一个关于数据爬取以后的数据解析功能的整合,方便查阅,以防混淆 主要讲到的技术有Xpath,BeautifulSoup,PyQuery,re(正则) 首先举出两个作示例的代码,方便后面举例 ...
- css进阶----盒子模型,Reset CSS,css浮动,css定位,z-index属性
盒子模型 把页面上的每一个元素当成一个盒子 由内容,内边距,边框,外边距组成 盒子模型举例 <!DOCTYPE html> <html lang="en"> ...
- 垂直相邻margin合并解决方法
块级元素的垂直相邻外边距会合并,水平边距永远不会重合. 行内元素实际上不占上下外边距,左右外边距也不会合并.浮动元素的外边距也不会合并. 外边距重叠的意义 外边距的重叠只产生在普通流文档的上下外边距之 ...
- hdu 4941 stl的map<node,int>用法
#include<iostream> #include<cstdio> #include<cstring> #include<map> using na ...
- sgu 194 无源汇有上下界的最大流(最大流模板dinic加优化)
模板类型的题具体参考国家集训队论文:http://wenku.baidu.com/view/0f3b691c59eef8c75fbfb35c.html 参考博客:http://blog.csdn.ne ...
- 【ACM】nyoj_132_最长回文子串_201308151713
最长回文子串 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 输入一个字符串,求出其中最长的回文子串.子串的含义是:在原串连续出现的字符串片段.回文的含义是:正着看和 ...
- asp.net--webservice--安全验证SoapHeader
服务端的设置 客户端设置,需要生成一个服务端的代理,调用服务端的方法
- Android:创建ZeroMQ的客户端
这里我们将给出一个subscribe模式的客户端示例程序,如下: private class ZeroMQMessageTask extends AsyncTask<String, Void, ...