工程项目中的常用功能,属于工具类,一般放到utils.js

获取getUrlParam

function getUrlParam(name) {
  var reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`);  // 构造一个含有目标参数的正则表达式对象
  var r = window.location.href.match(/\?[^\?]*$/)[0].slice(1).match(reg); // 匹配目标参数
  if (r) return +unescape(r[2]); //解码字符串
  return null;
}
//如果参数中带#号,就会出现问题,参考如下:

function getUrlParams(name) { // 不传name返回所有值,否则返回对应值
let localurl = window.location.href
if (localurl.indexOf('?') < 0) { return false }


url = localurl.split('?')[1]
if(url.indexOf('&')>0){
url = url.split('&')
}else{
url = [localurl.split('?')[1]]
}
name = name || ''
let nameres
// 获取全部参数及其值
for (let i = 0; i < url.length; i++) {
const info = url[i].split('=')
const obj = {}
obj[info[0]] = decodeURI(info[1])
url[i] = obj
}
// 如果传入一个参数名称,就匹配其值
if (name) {
for (let i = 0; i < url.length; i++) {
for (const key in url[i]) {
if (key === name) {
nameres = url[i][key]
}
}
}
} else {
nameres = url
}
// 返回结果
return nameres
}

 

 

手动实现bind函数,已经考虑了函数柯里化及作为构造函数,用new命令使用时亦兼容

 1 Function.prototype.bind2 = function (content) {
 2   if (typeof this !== "function") {
 3     throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
 4   };
 5 
 6   var args = Array.prototype.slice.call(arguments, 1),
 7     F = function () { },
 8     self = this,
 9 
10     bound = function () {
11       var innerArgs = Array.prototype.slice.call(arguments);
12       var finalArgs = args.concat(innerArgs);
13       return self.apply((this instanceof F ? this : content), finalArgs) //检测是否使用了new 命令构造函数
14     }
15   F.prototype = self.prototype;
16   bound.prototype = new F();
17 
18   return bound;
19 }

 

7.限制input框只能输入数字
onkeypress="return /[\d]/.test(String.fromCharCode(event.keyCode))"
@keyup="form.store_size=form.store_size.replace(/[^\d]/,'')"
扩展:Vue
<input v-model.number="numCheck" type="number" step="1" /> 干掉默认样式

antDesign

 rules: [{
          pattern: new RegExp(/^[1-9]\d*$/, 'g'),
          getValueFromEvent: event => event.target.value.replace(/\D/g, ''),
        }],


8.禁用文本框的n多方法
1.属性 disabled=true;
2.readonly=true;
3.onfocus=this.blur(); //即获得焦点时失去焦点
4.input.maxLength=0;
5.onkeypress(onkeydown,)=function(){return false;} //onkeyup并不起作用,原因见下文
限制input输入类型(多种方法实现)

来自 <https://www.cnblogs.com/eaysun/p/5490603.html>

 

 

 

 

 

posted @ 2019-10-16 17:49  Bruce_Grace  阅读(425)  评论(0编辑  收藏  举报