关于键盘:Cherry樱桃-键盘禁用功能键
Cherry|樱桃 键盘禁用功能键,比方F1声音等 解决办法:Ctrl+Fn
Cherry|樱桃 键盘禁用功能键,比方F1声音等 解决办法:Ctrl+Fn
以前下班打卡都是指纹或刷卡,总有指纹识别不灵敏或忘带工卡的懊恼。 当初有了AI人脸考勤机,人脸识别疾速打卡;疫情期间,戴口罩也可轻松辨认,平安又高效! 以前在逛海洋馆时,遇到不意识的动物要查问纸质材料或询问工作人员,费时又费劲。 当初随时关上小程序拍张照片上传,一键取得具体的动物介绍! 以前在日常差旅报销时,须要手动将发票上的信息录入到零碎中,繁琐又容易出错。 当初的报销零碎,只需将票据照片上传,信息就会主动录入零碎啦,省时又精确! 遇到AI后,你的衣食住行有没有比拟显著的变动? 分享你与AI的交加,看看人工智能给咱们的生存带来了哪些便当的扭转! 流动速戳:https://ai.baidu.com/forum/to... 流动规定 回复本帖,不少于20字,回帖点赞前40名将取得精美礼品~ 为本人喜爱的回帖点赞!!! 上面小编来打个样: 在北京履行垃圾分类之前,上海的敌人总是开玩笑的说”一杯珍珠奶茶要分三种垃圾,未喝完的珍珠奶茶算湿垃圾,杯身是干垃圾,盖子是可回收垃圾。全民网红小龙虾,整只小龙虾是湿垃圾,去黄龙虾头就是干垃圾,龙虾肉、龙虾黄是湿垃圾,龙虾壳又是干垃圾......”导致以前干湿不分的我当初要逼着本人去获取相干的分类常识。当初轮到北京了,更多的分类规定让我本不富裕的垃圾分类常识雪上加霜。 我每天早上都会去海淀公园晨跑,某天在公园看到了基于百度EasyDL平台研发的智能垃圾箱被很多人围观。智能垃圾桶的红外传感器检测到我凑近后,语音提醒我把垃圾放在辨认区域。在大屏显示垃圾是否可回收并关上对应箱体的挡板。有了智能垃圾箱,我再也不必头疼垃圾分类了。 流动工夫 2021年7月15—30日中午12点 流动奖品 后方大波礼品来袭~ 1—3名 电竞机械键盘 4—10名 京东卡、爱奇艺黄金会员年卡 大礼包 11—20名 度熊太空舱挪动电源 21—30名 小度液晶小黑板 31—40名 舞狮积木熊
在移动端里, 当输入框处于页面比较下方的时候回发生键盘覆盖输入框的情况, 在小程序中也发生了类似情况, 但小程序提供了一些api, 但不能达到需求. 这里来简单说一下解决思路.小程序的默认行为在发生了键盘覆盖输入框的时候, 在不操作任何api的情况下, 小程序会把屏幕向上推, 推到输入框正好在键盘上方的位置.也就是如果不经过处理, 小程序的键盘是不会覆盖输入框的. 但是在我的需求里这样还不够, 因为页面上部分是需要持续展示的内容, 不希望把页面向上推.所以下面要通过小程序的api来解决这些问题.cursor-spacing在比较正常的UI设计中, 输入框外面实际都会有一层wrapper, 而很明显小程序是默认行为是不知道的, 所以结果是会把这层wrapper的下半部分(输入框以下的)切掉. 那么就非常难看了.引入这个apicursor-spacing, 设多少, input下面就留多少. 这个数字应当是’输入框下边缘到wrapper结束的距离".小程序的坑在于: 文档上的单位是错的, 本来就需要试才知道这个属性的含义是什么, 所以单位错导致无效果就让一(大)部分人放弃了. 正确的单位是带有单位的字符串. 例如10px或者100rpx.adjust-position刚才说到我的需求, 我希望页面不向上推, 而直接把输入框顶上来.于是尝试了这个api. 默认是true, 把他设为false. 效果变成了: 点了输入框, 键盘完美覆盖输入框.于是在加上cursor-spacing, 发现这两个api是不能同时生效的.所以最后结论是: 单纯用提供的api无法实现需求了. 所以只能监听事件自己做.解决方案手动操作输入框思路:adjust-position设为false.在输入框的wrapper的bottom样式绑到本地数据, 并设为absolute定位.在focus事件里改变输入框的位置.在blur事件里复原输入框的位置.按照这个思路操作, 遇到了几个问题:如何确定输入框的位置发现在bindfocus事件中可以获得键盘的高度, 经过尝试, 键盘的高度是以px为单位的. 所以直接把bottom的值设为px高度就行了.如果输入框wrapper的相对定位不是页面底部, 情况就比较复杂, 若是用rpx为单位, 需要获得屏幕宽高来计算px数, 在不麻烦的情况下可以调整布局使wrapper相对于页面底部定位.在改变style后输入框立即失去焦点发生了这个情况后表现为: 点了输入框, 输入框的wrapper闪一下又回原处. (因为失去焦点)经过多次试验, 需要做的是在绑定一个本地变量到focus属性.然后用wx:if根据是否focus隐藏输入框, 放一个假的输入框, 点击以后使改变focus属性来唤起键盘.贴一份实现的代码.
小程序自定义数字键盘插件wckeyboard|仿微信支付密码键盘|仿支付宝数字键盘小程序由于没有键盘组件,只能是使用<input type=“number”>来唤起系统键盘了,在某些场景下,自定义数字键盘还是有需要的,如:商城系统零钱支付、会员卡支付等,需要输入密码的时候,如果能使用自定义数字键盘的话,会有比较好的用户体验。callback: function () { console.log(‘事件处理’); var that = this, opt = that.opts; // 清除上一个timer clearTimeout(util.timer[that.__idx - 1]); delete util.timer[that.__idx - 1]; /* * 键盘处理函数事件 ————————————— / // 错误提示 function chkErr(cls, str){ __this.setData({ ‘__options.err’: [cls, str] }); setTimeout(function(){ __this.setData({ ‘__options.err’: false }); }, 2500); } // 键盘值检测 function chkVal(text){ if (text.indexOf(’.’) != -1 && text.substring(text.indexOf(’.’) + 1, text.length).length == 3) { return; } if (text == ‘0’) { return; } // 输入最大值限制 if (opt.max) { if (parseInt(text) >= opt.max && text.indexOf(’.’) == -1) { chkErr(“error”, “最大限制值:” + opt.max.toFixed(2)); return; } } // 输入手机号码判断 if (opt.type && opt.type == ’tel’) { var tel = text, _len = parseInt(tel.length), reg = /^0?1[3|4|5|8|7][0-9]\d{8}$/; if (_len > 11) return; if (_len == 11) { if (!reg.test(tel)) { chkErr(“error”, “手机号码格式有误!”); } else { chkErr(“success”, “验证通过!”); } typeof opt.complete == “function” && opt.complete.call(this, text); } } // 输入密码长度判断 if (opt.type && opt.type == ‘pwd’) { var _len = parseInt(text.length); if (_len > opt.len) return; if (_len == opt.len) { typeof opt.complete == “function” && opt.complete.call(this, text); } } return true; } // 键盘值输出 function setVal(text){ __this.setData({ ‘__options.kbVal’: text }); typeof opt.oninput == “function” && opt.oninput.call(this, text); } // 处理数字1-9 __this.tapNum = function(e){ var kbval = this.data.__options.kbVal, text = e.currentTarget.dataset.text; var val = kbval + text; if (!chkVal(val)) return; setVal(val); } // 处理小数点 __this.tapFloat = function(e){ var kbval = this.data.__options.kbVal, text = e.currentTarget.dataset.text; if(kbval == ’’ || kbval.indexOf(’.’) != -1){ return; } var val = kbval + text; setVal(val); } // 处理数字0 __this.tapZero = function(e){ var kbval = this.data.__options.kbVal, text = e.currentTarget.dataset.text; var val = kbval + text; if (!chkVal(val)) return; setVal(val); } // 处理删除 __this.tapDel = function(e){ var val = this.data.__options.kbVal.substring(0, this.data.__options.kbVal.length - 1); setVal(val); } // 处理确定按钮事件 __this.tapSure = function(e){ var kbval = this.data.__options.kbVal; typeof opt.ok == “function” && opt.ok.call(this, kbval); } / ————————————— */ // 点击遮罩层关闭 __this.shadeTaped = function (e) { if (!opt.shadeClose) return; exportAPI.close(that.__idx); } // 点击键盘xclose按钮关闭 __this.xcloseTaped = function(e){ exportAPI.close(that.__idx); } // 处理销毁函数 opt.end && (util.end[that.__idx] = opt.end); } ...