给 button 加超链接 window.open 与 window.location.href 区别

加超链接很简单,只需要在标签里添加点击事件:onclick="window.open('/admin/goods_edit.html')"或者onclick="window.location.href='/admin/goods_edit.html'" 再抑或在外部加个 a 标签即可。window.open 只是打开页面window.location.href 打开页面并刷新

表单校验 JQuery 与正则的使用

简单讲解下正则的使用:单个字符:[]如: a [a-zA-Z0-9_]特殊符号代表特殊含义的单个字符:\d: 单个数字字符 [0-9]\w: 单个单词字符 [a-zA-Z0-9_] 量词符号:?:表示出现 0 次或 1 次 *:表示出现 0 次或多次 +:出现 1 次或多次 {m,n}: 表示 m<= 数量 <= n* m 如果缺省: {,n}: 最多 n 次 * n 如果缺省:{m,} 最少 m 次 开始结束符号 ^: 开始$: 结束 创建var reg = new RegExp(" 正则表达式 ");var reg = / 正则表达式 /; 方法. test(参数): 验证指定的字符串是否符合正则定义的规范,简单示例:var a="12345";var reg=/^\w{6,12}$/;   // 正则   表示字符数 6 -12var b=reg.test(a); // 此处 a 值不符合返回 falsealert(b);下面以注册表单校验为例:<!-- 导入 jquery--><script src="js/jquery-3.3.1.js"></script><script>    /* 思路:    *  为每个单元格建立校验    *  在输入框离开焦点跟提交时候启用校验 */    function checkUsername() { // 校验用户名        /* 获取用户名值        *  定义正则        *  判断是否为 true*/        var username = $("#username").val();        var reg_username = /^\w{3,10}$/; // 用户名为 3 -10 位字符串        var flag = reg_username.test(username);        if (flag) {            console.log(" 用户名合法 ") // 浏览器控制台显示日志内容   实际不用写            $("#username").css("border", "");        } else {            console.log(" 用户名不合法 ")            $("#username").css("border", "1px solid red");        }        return flag;    }    function checkPassword() {        var password = $("#password").val();        var reg_password = /^\w{6,16}$/; // 密码为 6 -10 位字符串        var flag = reg_password.test(password);        if (flag) {            console.log(" 密码合法 ")            $("#password").css("border", "");        } else {            console.log(" 密码不合法 ")            $("#password").css("border", "1px solid red");        }        return flag;    }    function checkEmail() {        var email = $("#email").val();        var reg_email = /^\w+\@\w+\.\w+$/; // 符合特定格式的字符串   带 @跟.        var flag = reg_email.test(email);        if (flag) {            console.log(" 邮箱合法 ")            $("#email").css("border", "");        } else {            console.log(" 邮箱不合法 ")            $("#email").css("border", "1px solid red");        }        return flag;    }    function checkName() {        var name = $("#name").val();        var reg_name = /^\w{3,10}$/;        var flag = reg_name.test(name);        if (flag) {            console.log(" 姓名合法 ")            $("#name").css("border", "");        } else {            console.log(" 姓名不合法 ")            $("#name").css("border", "1px solid red");        }        return flag;    }    function checkTelephone() {        var telephone = $("#telephone").val();        var reg_telephone = /^\1\d{10}$/; // 首位为 1 后面十位为数字        var flag = reg_telephone.test(telephone);        if (flag) {            console.log(" 手机合法 ")            $("#telephone").css("border", "");        } else {            console.log(" 手机不合法 ")            $("#telephone").css("border", "1px solid red");        }        return flag;    }    function checkCheck() {        var check = $("#check").val();        var reg_check = /^\w{4}$/; // 已知验证码为四位字符        var flag = reg_check.test(check);        if (flag) {            console.log(" 验证码合法 ")            $("#check").css("border", "");        } else {            console.log(" 验证码不合法 ")            $("#check").css("border", "1px solid red");        }        return flag;    }    $(function () {        /* 当表单提交时调用校验方法 */        $("#registerForm").submit(function () {            if (checkName() && checkPassword() && checkName() && checkEmail() && checkTelephone() && checkCheck()) {                $.post("user/regist", $(this).serialize(), function (data) { //serialize()序列化表单内容                    if (data.flag) { // 从服务器获取注册结果                        console.log(" 注册成功 ")                        location.href = "regist_ok.html"; // 注册成功跳转页面                    } else {                        console.log(" 注册失败 ")                        $("#errorMsg").html(data.errorMsg); // 注册失败显示错误信息                    }                })            }        });        $("#username").blur(checkUsername); // 鼠标离开输入框执行事件        $("#password").blur(checkPassword); // 注意方法名后不要加(),否则失焦事件将无异议        $("#email").blur(checkEmail);        $("#name").blur(checkName);        $("#telephone").blur(checkTelephone);        $("#check").blur(checkCheck);    })</script>

JQuery 中的 mouseleave 跟 mouseout 事件区别

使用 IDEA 写 JQ 事件时候发现有两种事件都是鼠标离开时触发的,它们分别是 mouseleave 跟 mouseout 为此我也上网百度了下得到两点区别: 不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。 只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。 也就是说假如一个 div1 内部又有个 div2,你在 div1 中绑定了 mouseout,当你鼠标离开 div2 时候也会触发事件,而 leave 不会,因此大家在使用时候建议根据具体情况使用

JQuery 中的 mouseleave 跟 mouseout 事件区别

最简单 Js 显示网站已运行 xx 多少天 倒计时天数

     经常看到一些网站下端都会写“本站已安全运行 xx 天之内”的字样,到底怎么也能实现呢?除了用 PHP 等其他语言,其实 js 也可以很容易实现,下面放代码:<a> 网站已运行 </a><a id="days">0</a><a> 天 </a><script>var s1 = '2018-02-13';// 设置为你的建站时间s1 = new Date(s1.replace(/-/g, "/"));s2 = new Date();var days = s2.getTime() - s1.getTime();var number_of_days = parseInt(days / (1000 * 60 * 60 * 24));document.getElementById('days').innerHTML = number_of_days;</script>     区区几行即可实现,可以放在网站任意位置哦!

X-Frame-Options 头未设置 防止页面被 iframe 内框架调用

描述: 目标服务器没有返回一个 X -Frame-Options 头。X-Frame-Options HTTP 响应头是用来确认是否浏览器可以在 frame 或 iframe 标签中渲染一个页面,网站可以用这个头来保证他们的内容不会被嵌入到其它网站中,以来避免点击劫持。危害: 攻击者可以使用一个透明的、不可见的 iframe,覆盖在目标网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的 iframe 页面。通过调整 iframe 页面的位置,可以诱使用户恰好点击 iframe 页面的一些功能性按钮上,导致被劫持。解决方案:修改 web 服务器配置,添加 X -frame-options 响应头。赋值有如下三种:(1)DENY:不能被嵌入到任何 iframe 或 frame 中。 (2)SAMEORIGIN:页面只能被本站页面嵌入到 iframe 或者 frame 中。 (3)ALLOW-FROM uri:只能被嵌入到指定域名的框架中。也可在代码中加入,在 PHP 中加入:header('X-Frame-Options: deny');防止某些重要网页被其他网站框架导入,可以给页面增加 X -Frame-Options 响应头,这样浏览器会依据 X -Frame-Options 的值来控制 iframe 框架的页面是否允许加载显示出来,IE 下的效果如下(此内容无法再框架中显示。为了帮助保护在此网站中输入的信息安全,此内容的发行者不允许在框架中显示该信息),其他非 IE 核心浏览器会显示空白内容。动态页添加 X -Frame-Options 响应头示例代码 asp?123<%response.AddHeader "X-Frame-Options","Deny"%>Asp.Net?1Response.AddHeader("X-Frame-Options", "Deny");PHP?1header('X-Frame-Options:Deny'); 如果确认你整个网站都不能被框架,可以直接设置 web 服务器,增加 X -Frame-Options 响应头。IIS 如下图所示,增加 http 头 X-Frame-Options 响应头可用值有DENY:浏览器拒绝当前页面加载任何 Frame 页面SAMEORIGIN:frame 页面的地址只能为同源域名下的页面ALLOW-FROM:origin 为允许 frame 加载的页面地址 浏览器对 X -Frame-Options 响应头的支持如下 浏览器 版本支持IE8.0+Firefox3.6.9+Opera10.50+Safari4.0+Chrome4.1.249.1024+

X-Frame-Options 头未设置 防止页面被 iframe 内框架调用

支付宝 微信 QQ 多合一收款码二维码制作及源码

     几年前在买东西消费还少不了现金,现在移动支付已经遍地开花,就连路边摊都会贴个微信或支付宝收款码了,但是某些商店居然用一个二维码实现多种支付软件付款,是不是觉得很神奇?其实我们也能简单实现下(以下来自网络收集整理):  1、你要先有一个域名和空间,无论免费收费皆可,PHP 的即可  2、或许收款码网址:打开自己的支付宝,微信,QQ,找到收款码然后保存下来。     如何获取微信收款码?打开微信,点击右上角的【+】号,再点击收付款,然后点击“我要收款”,最后保存收款码或截图即可。     如何获取支付宝收款码?打开支付宝,在其首页点击一下【收钱】,直接点击保存图片即可。     如何获取 QQ 收款码?打开手机 QQ,在其主界面点击右上角的【+】号,再点击付款,然后点击右上角的【...】选择【我要收款】,截图收款码保存到相册即可。  3、打开二维码识别工具  点击进入在线工具 上传收款码图片之后得到各收款二维码网址备用 源码部分 : 多合一收款码其实原理很简单,通过判断扫描方的软件 UA 跳转到不同网址而已。可以 点击此处查看软件 UA根据 UA 不同跳转到不同网址,但是有个小问题,腾讯 QQ、微信跳转后并不会直接付款,所以只能通过间接方式,跳转到收款码图片页面,然后长按收款码执行付款操作。下面直接上 PHP 代码header('HTTP/1.1 301 Moved Permanently');if(strstr($_SERVER['HTTP_USER_AGENT'], 'QQ/')){header('Location: QQ 收款码图片页 ');}else if(strstr($_SERVER['HTTP_USER_AGENT'], 'Alipay')){header('Location:  此处输入支付宝二维码所识别的链接 '); }else if(strstr($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger/')){header('Location:  微信收款码图片页 ');}另外还附赠一份现成的 HTML 收款码源码,使用时请自行替换收款码网址,该源码来自网络 点击链接进入下载源码 (密码:5voc)

支付宝 微信 QQ 多合一收款码二维码制作及源码