APICloud框架——总结一下最近开发APP遇到的一些问题 (二)

来源:互联网 发布:大数据经典算法 编辑:程序博客网 时间:2024/05/21 17:44

高度自适应

flex布局 允许子元素伸缩

手机号正则

function checkPhone(data){     if(!(/^1[34578]\d{9}$/.test(data))){         alert("手机号码有误,请重填");          return false;     } }function checkTel(data){    if(!/^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/.test(data)){        alert('固定电话有误,请重填');        return false;    }}

db模块执行sql语句

一句一句执行,不能以;号隔开,否则后面的会不执行

vscode汉化

快捷键F1, 输入Configure Language 回车, 把en改成zh-CN, 保存, 重启vscode.

格式化时间

new Date().toISOString().match(/(\d{4}-\d{2}-\d{2})/)[1];

创建数据库操作

  • 创建数据库
DROP TABLE IF EXISTS addressList; CREATE TABLE addressList(user_id int)// 如果有addressList这个表就不执行新建命令
  • 设置唯一索引
CREATE UNIQUE INDEX IF NOT EXISTS user_id_idx ON addressList (user_id)// 在addresslist表中的user_id这个列设置唯一索引user_id_idx

IOS系统下输入框字体数量

使用onkeup事件有BUG, 如果点击键盘上面的文字输入到输入框,onkeyup不会触发,统计不了字体数量

使用oninput这个事件可以解决这个问题

android和ios行高不兼容

使用js判断 android比ios大9px

去掉input[type=number]的箭头

-webkit-appearance:none

git

在使用git的时候,每次执行

#git add *

都会提示这样一个警告消息:

warning: LF will be replaced by CRLF in XXXXXXXXXXXXXX.

虽然说没有什么影响吧。

不过就是觉得太碍眼了,

按照这样设置就没有问题了:

git config core.autocrlf false// 禁止自动转换

这样设置git的配置后在执行add操作就没有问题了。

删除指定字符串

把指定字符串替换成空

str = str.replace('a','')

查找指定字符串是否含有某个子字符串

str.indexOf('aa') == -1不含有指定字符串str.indexOf('aa') >=0含有

slice和splice

slice(start,end);剪切数组
splice(start, howmany, item1, ..., itemX); 方法用于插入、删除或替换数组的元素。// start 开始插入/删除的位置// howmany 插入/删除几项,必须是数字// item1, ..., itemX 插入的内容, 不传的时候为删除

listContact模块在小米5s下的bug

每个页面第一次打开listContact列表会出现点击返回的index不正确, 右边字母导航也会出现重复

解决方法, 在打开正式有数据的列表之前打开一个空的列表,然后立马关闭

listContact.open({    x: -1000,    y: -1000,    w: 5,    h: 5,    data: [],    fixedOn: api.frameName},function(ret,err){})listContact.close();listContact.open({    // 有数据的列表})

安卓下第二个bug

  • 设置选中的项, 安卓不起作用

解决办法: 在设置数据源的时候, 处理以选择数据

清除角标

api.setAppIconBadge({    badge: 1});// 为0时表示清除

css三角形带边框

原理: 写两个三角形, 一个覆盖另一个, 错开一个像素

 p:after {    content: "";    display: inline-block;    width: 0;    height: 0;    border-top: .15rem solid transparent;    border-right: .22rem solid #fff;    border-bottom: .15rem solid transparent;    position: absolute;    top: .25rem;    left: -.20rem;} p:before {    content: "";    display: inline-block;    width: 0;    height: 0;    border-top: .15rem solid transparent;    border-right: .22rem solid #E3E3E3;    border-bottom: .15rem solid transparent;    position: absolute;    top: .25rem;    left: -.22rem;}

Deferred long-running timer task的问题

Deferred long-running timer task(s) to improve scrolling smoothness. See crbug.com/574343. at frame1.html : 0

延时函数使用不当

ios下创建时间对象

// 处理时间显示    function initTime(time) {        var timeRep = time;        time=time.replace(/-/g,':').replace(' ',':');        time=time.split(':');        var nowTime = new Date();        var pageTime = new Date(time[0],(time[1]-1),time[2],time[3],time[4],time[5]);        if ((pageTime.getDate() != nowTime.getDate()) || (pageTime.getFullYear() != nowTime.getFullYear()) || ((pageTime.getMonth()+1) != (nowTime.getMonth()+1))) {            // 不是今天            return timeRep;        } else {            // 今天            if (nowTime.getHours() != pageTime.getHours()) {                return nowTime.getHours() - pageTime.getHours()+ '小时之前'            } else {                return nowTime.getMinutes() - pageTime.getMinutes() + '分钟之前'            }        }    }

长按事件

var timeOutEvent=0;//定时器           //开始按           function gtouchstart(ele){            var e = window.event            var x = e.touches[0].pageX,y=e.touches[0].pageY            timeOutEvent = setTimeout("longPress("+x+","+y+")",500);//这里设置定时器,定义长按500毫秒触发长按事件,时间可以自己改,个人感觉500毫秒非常合适               return false;           };           //手释放,如果在500毫秒内就释放,则取消长按事件,此时可以执行onclick应该执行的事件           function gtouchend(){               clearTimeout(timeOutEvent);//清除定时器               if(timeOutEvent!=0){                   //这里写要执行的内容(尤如onclick事件)               }               return false;           };           //如果手指有移动,则取消所有事件,此时说明用户只是要移动而不是长按           function gtouchmove(){               clearTimeout(timeOutEvent);//清除定时器               timeOutEvent = 0;           };           //真正长按后应该执行的内容           function longPress(x,y){            timeOutEvent = 0;             $api.css($api.dom('.shadow'), 'display:inline-block;top:' + y + 'px;left:' + x + 'px;');            //执行长按要执行的内容,如弹出菜单               console.log("长按事件触发发");           }   

两次往数据库插入同一条数据

  1. 首先查询数据所在的行(需要有一个唯一索引)
  2. 如果有数据就更新数据
    UPDATE 表名 SET 列名 = 数据,列2 = 数据2 WHERE 唯一索引 = 索引
  1. 没有该数据就插入
    INSERT OR REPLACE INTO 表名(列名1, 列名2, 列名3, 列名14)  VALUES (值1, 值2 ...)
原创粉丝点击