input控件数字输入控制总结:

  1、type="number"

    12---->12.  这样的变化js无法捕获

    未输入model值为 undefined,输入之后清空model值为 null

解法思路:

  1、正则匹配提交之前判断

  2、监听keyup事件、keydown事件

      不让输入 监控键盘code、

        if (theEvent.preventDefault) {
          theEvent.preventDefault();
        } else { // ie
          theEvent.returnValue = false;
        }

      重新替换

        element.val( value ? value[0] : null);

情景:

  移动端 input控件,调数字键盘,在输入小数点时光标会自动跳到小数点前面。安卓6.0.1的版本会这样。

question:

  1、调原生数字键盘的方法,必须用 type="number"?(用type="text",正则校验比较简单)

      通过其他约定的属性 调原生数字键盘,这时 修改type="text"

    网上有人说,增加h5属性 pattern="[0-9]", (经试验没什么用)

  1、如何区分数字12.0和12

    如何用js表示 "形如12. " 这样的数字

2、如何拿到 input inner-editor的值,查看浏览器代理,这是浏览器渲染的

3、光标位置的控制

    浏览器:IE、非IE

    

function getTxt1CursorPosition(){
var oTxt1 = document.getElementById("txt1");
var cursurPosition=-1;
if(oTxt1.selectionStart){//非IE浏览器
cursurPosition= oTxt1.selectionStart;
}else{//IE
var range = document.selection.createRange();
range.moveStart("character",-oTxt1.value.length);
cursurPosition=range.text.length;
}
alert(cursurPosition);
}

    type="number"时 不支持 ,DOM的光标位置属性,type="text" 时支持

      

   

  4、chrome中, 如果输入了一些非数字的字符,就会返回undefined  通过event.currentTarget.validity.badInput=== true可以捕捉到这一信息,event.currentTarget.validity.valid(这一属性很渣,12.3时竟然是false)

修正keyAllow(angular.js写的一个指令)

if (keyAllow === "amount") {
var model = element.attr("v-model");
value = value.match(/^[0-9]*(\.?[0-9]{0,2})/);
element.attr("maxlength", value[0].indexOf(".") > -1 ? value[0].indexOf(".") + 3 : '');
value = parseFloat(value);
scope[model] = value;
var eVal = event.currentTarget.validity;
if(eVal.badInput){
if((scope.oldValue+'')== 'undefined'){
element.val('');
}else if((scope.oldValue+'').length > 1){
scope[model] = scope.oldValue;
}else{
element.val('');
}
}
if(!isNaN(value)){
scope.oldValue = value;
}
return;
}

其他思路:

  使用 event.stopPropagation() 阻止默认行为。input 元素的 keydown 事件发生并处理后,浏览器默认会将用户键入的字符自动追加到 input 元素的值中

   微信不支持keyup, keydown, keyup?事件对象思路

input type="number"的更多相关文章

  1. 去掉 input type="number" 右边图标

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. 去除input[type=number]最右边的spinners(默认加减符号)

    // 去掉input[type=number]默认的加减号 input[type='number'] { -moz-appearance:textfield; } input[type=number] ...

  3. input[type=number]问题

    有时候对于只能输入数字的表单会有想要写成input[type=number]但是其中有一个问题 <input type="text" name="code" ...

  4. 动手写个数字输入框1:input[type=number]的遗憾

    前言  最近在用Polymer封装纯数字的输入框,开发过程中发现不少坑,也有很多值得研究的地方.本系列打算分4篇来叙述这段可歌可泣的踩坑经历: <动手写个数字输入框1:input[type=nu ...

  5. 限制input[type=number]的输入位数策略整理

    当我们使用类型number的input输入框的时候,我们可能需要限制输入的位数,这个时候通常会想到maxlength,但是maxlength是在number类型的时候是不支持的,下面是一些解决这种问题 ...

  6. CSS input type="number"出现上下箭头时解决方案

    input type="number"时录入内容不可控制,解决方案是在css中添加//火狐input[type=number] {      -moz-appearance:tex ...

  7. 加减号改变input[type=number]的数值,基于[zepto.js]

    通过点击加减号可以更改input的数值,样式如下图: 具体的html代码如下: <div class="xh-lxx-cart-count1"> <span cl ...

  8. 【笔记】移动端H5数字键盘input type=number的处理(IOS和Android)

    在Vue中的项目,基于VUX-UI开发,一个常见的需求: 1.金额输入框 2.弹出数字键盘 3.仅支持输入两位小数,限制最大11位数,不允许0开头 后续:与UI沟通后, 思路调整为限制输入,并减少正则 ...

  9. 清除input[type=number]的默认样式

    input[type=number] { -moz-appearance:textfield; } input[type=number]::-webkit-inner-spin-button, inp ...

  10. 去除input[type=number]的默认样式

    input[type=number] { -moz-appearance: textfield; } input[type=number]::-webkit-inner-spin-button, in ...

随机推荐

  1. LED将为我闪烁:控制发光二极管

      一个完整的linux驱动主要由内部处理和与硬件交互两部分组成.其中内部处理主要是指linux驱动的装载.卸载.与设备文件相关的动作处理以及业务逻辑等:与硬件交互主要是指通过iowrite32.io ...

  2. Java中String、StringBuffer、StringBuilder区别与理解

    一.先比较String.StringBuffer.StringBuilder变量的HashCode值 使用System.out.println(obj.hashcode())输出的时对象的哈希码, 而 ...

  3. 论文阅读(Weilin Huang——【AAAI2016】Reading Scene Text in Deep Convolutional Sequences)

    Weilin Huang--[AAAI2016]Reading Scene Text in Deep Convolutional Sequences 目录 作者和相关链接 方法概括 创新点和贡献 方法 ...

  4. asp.net MVC3 无法打开项目文件“E:\我们的项目\Project\HeatingMIS.Web\HeatingMIS.Web.csproj”。此安装不支持该项目类型。

    在vs中打开mvc3项目,虽然装了mvc3,但是还是会遇到莫名其妙的错误,这是我在做开发的时候遇到的一个问题,附带解决方案,和大家分享一下 问题描述:无法打开项目文件“E:\我们的项目\Project ...

  5. CEGUI0.8.4例子

    #define GLUT_DISABLE_ATEXIT_HACK#pragma comment(lib,"glew32.lib")#include<stdlib.h># ...

  6. Hibernate设置自增

    hibernate设置自增,在映射生成的实体类中需要实现Serializable接口 public class GWgDyEntity implements Serializable { //在主键上 ...

  7. Linux_用户级_常用命令(4):cp

    Linux_用户级_常用命令之cp 开篇语:懒是人类进步的源动力 本文原创,专为光荣之路公众号所有,欢迎转发,但转发请务必写出处! Linux常用命令第二集包含命令:cp 格式 cp  [-optio ...

  8. MVC简单分层思想(连接数据库)

    图片内容是所有的包名,文件名. 1.创建(M)模型 package oa.bean; public class User { private String userName; private Stri ...

  9. oracle 数据库Cmd命令导入导出

    imp 导入数据库:       1.直接导入数据表:   imp username/passwork@orcl file=d:/AA.dmp          eg: imp 用户名/密码@orcl ...

  10. 课程设计 --- 黑白棋中的 AI

    原文链接:https://www.dreamwings.cn/reversi/3013.html 到了考试周了佯,可是偏偏这个时候迎来了很多很多的课程设计,幸好教授把C语言的课程设计提前发出了,不然都 ...