//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优化输入验证的更多相关文章

  1. JS学习笔记12_优化

    一.可维护性优化 1.添加注释 注释能够增强代码的可读性以及可维护性,当然,理想情况是满满的注释,但这不太现实.所以我们只需要在一些关键的地方添上注释: 函数和方法:尤其是返回值,因为直接看不出来 大 ...

  2. 在js中实现邮箱格式的验证

    在js中实现邮箱格式的验证 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><htm ...

  3. 客户端JS性能的一些优化的小技巧

    下面是一些关于客户端JS性能的一些优化的小技巧:1.[顶]关于JS的循环,循环是一种常用的流程控制.JS提供了三种循环:for(;;). while().for(in).在这三种循环中 for(in) ...

  4. javascript设计模式实践之策略模式--输入验证

    策略模式中的策略就是一种算法或者业务规则,将这些策略作为函数进行封装,并向外提供统一的调用执行. 先定义一个简单的输入表单: <!DOCTYPE html> <html> &l ...

  5. js资源加载优化

    互联网应用或者访问量大的应用,对js的加载优化是不可少的.下面记录几种优化方法 CDN  + 浏览器缓存 CDN(content delivery network)内容分发网络, 最传统的优化方式.其 ...

  6. AngularJS学习之输入验证

    1.AngularJS可以验证表单和控件可以验证输入的数据: 2.输入验证:客户端不能确保用户输入数据的安全,所以服务器端的数据验证也是必须的: 3.应用实例: <! DOCTYPE html& ...

  7. js限制文本框只能输入整数或者带小数点[转]

    这篇文章是关于js限制文本框只能输入整数或者带小数点的内容,以下就是该内容的详细介绍. 做表单验证的时候是否会碰到验证某个输入框内只能填写数字呢,仅允许输入整数数字或者带小数点的数字.下面这段代码也许 ...

  8. js简单验证码的生成和验证

    如何用js生成简单验证码,并验证是否正确的方法 1.html页面如下 <div> <table border="0" cellspacing="5&qu ...

  9. formValidator输入验证、异步验证实例 + licenseImage验证码插件实例应用

    实例技术:springmvc 实现功能:完整用户登录流程.输入信息规则校验.验证码异步校验. 功能清单: 1.springmvc控制器处理get请求(/member/login.html),进行静态页 ...

随机推荐

  1. Books Queries (codeforces 1066C)

    模拟题 开一个容器进行模拟即可,注意容器设置初始大小不然容易re.设置两个指针l,r.把容器当作桶,每一个桶都有一个编号表示位置,左边进入那么就是编号为l,右边一样.然后l--或者r++,l=r=0的 ...

  2. ansible - playbook(剧组)

    目录 ansible - playbook(剧组) 常用命令 五种传参方式 常用元素详解 tags handlers template when 循环 嵌套循环 ansible - playbook( ...

  3. noip模拟赛 PA

    分析:很显然这是一道搜索题,可能是由于我的搜索打的太不美观了,这道题又WA又T......如果对每一个询问都做一次bfs是肯定会T的,注意到前70%的数据范围,N的值都相等,我们可以把给定N的所有情况 ...

  4. hdu 4975 最大流解决行列和求矩阵问题,用到矩阵dp优化

    //刚开始乱搞. //网络流求解,如果最大流=所有元素的和则有解:利用残留网络判断是否唯一, //方法有两种,第一种是深搜看看是否存在正边权的环,见上一篇4888 //至少四个点构成的环,第二种是用矩 ...

  5. [UOJ#35] [UOJ后缀数组模板题] 后缀排序 [后缀数组模板]

    后缀数组,解决字符串问题的有利工具,本题代码为倍增SA算法 具体解释详见2009年国家集训队论文 #include <iostream> #include <algorithm> ...

  6. php表单常用正则表达式

    <?php /** * @description: 正则表达式匹配 */ class Regex { /** * @手机号 */ public static function Phone($su ...

  7. 怎样用Android Studio打多包名APK

    问题:项目中不同的分发渠道可能须要打包多种APK(相同的代码),包名可能是不一样的,假设一个一个改动包名又一次编apk是非常麻烦,能够參考下列步骤在Android Studio上操纵Gradle来打包 ...

  8. 阿伦 凯 Alan Kay 面向对象编程思想创始人

    The best way to predict the future is to invent it. 预测未来最好的办法就是创造它.

  9. [Vue-rx] Access Events from Vue.js Templates as RxJS Streams with domStreams

    The domStreams component property enables you to access Events from your Vue.js templates as Streams ...

  10. Codeforces Round #Pi (Div. 2) —— C-Geometric Progression

    题意: 如今有n个数,然后给出一个数k(代表的是等比数列中的那个公比),然后第二行给出n个数,代表的是这个序列. 最后的问题是叫你找出在这个序列中满足公比为k的三个数有几种.并输出方案总数. 思路: ...