简体   繁体   English

IE中的HTML5输入类型编号支持

[英]HTML5 input type number support in IE

I have JS code for checking number input 我有用于检查数字输入的JS代码

function isNumberKey(evt) {

    var charCode = (evt.which) ? evt.which : evt.keyCode;
    // Added to allow decimal, period, or delete
    if ( charCode == 190 || charCode == 46 || charCode == 45 || charCode == 32 || charCode == 43) 
        return true;

    if (charCode > 31 && (charCode < 48 || charCode > 57)) 
        return false;

    return true;
} 

Html input: Html输入:

<input class="input_txt1" type="text" 
       placeholder="Client Postal Code"         
       onkeypress="return isNumberKey(event)" id="ZCHADR5">

Now if switch to HTML5, and use input type=number , the same is not working in IE .how should I support it in IE. 现在如果切换到HTML5,并使用输入type=number ,那么在IE中也是如此。我应该如何在IE中支持它。

PolyFills are created to address some browser[Specially IE] issues on supporting some features/tags they don't cover. 创建PolyFill是为了解决一些浏览器[特别是IE]关于支持它们未涵盖的功能/标签的问题。 One for each feature. 每个功能一个。 For example you need HTML5Shiv(shim) to add css3 styling support to IE, Fabric.js for rendering SVG via HTML5 canvas, & etc. 例如,你需要HTML5Shiv(shim)来为IE添加css3样式支持,Fabric.js用于通过HTML5 canvas等渲染SVG。

Modernizr has aggregated most of them under an all-in-one library. Modernizr在一体化图书馆中聚集了大部分。

But after all, even with this in mind, you have 2 options to solve these kinda issues. 但毕竟,即使考虑到这一点,你有两个选择来解决这些问题。

  1. Fill the shortage of browser on the feature by Polyfills. Polyfills填补了该功能的浏览器短缺。
  2. Stick with JavaScript for fulfilling what you need. 坚持使用JavaScript来实现您的需求。

For this particular case, I prefer the latest solution. 对于这种特殊情况,我更喜欢最新的解决方案。

I recommend you sticking with FormValidator jQuery Library for a consistent, complete & easy-to-use solution form validation across all browsers. 我建议您坚持使用FormValidator jQuery Library,以便在所有浏览器中进行一致,完整且易于使用的解决方案表单验证。

My first observation is that you should try writing unobtrusive JavaScript. 我的第一个观察是你应该尝试编写不引人注目的JavaScript。 This simply means separate HTML from JavaScript. 这仅仅意味着将JavaScript与JavaScript分开。 Secondly, try this method which checks for existence of DOM Level 2 method on the element passed in. If it exists, it is used, passing in the event type, event handler function and false (to indicate the bubbling phase). 其次,尝试使用此方法检查传入的元素是否存在DOM Level 2方法。如果存在,则使用它,传入事件类型,事件处理函数和false(表示冒泡阶段)。 If the IE method is available, it is used as a second option. 如果IE方法可用,则将其用作第二个选项。 The event type must be prefixed with 'on' in order for it to work in IE 8 and earlier. 事件类型必须以“on”为前缀,以便在IE 8及更早版本中工作。 The last resort is to use DOM Level 0 method (code should never reach here in modern browsers). 最后一种方法是使用DOM Level 0方法(代码在现代浏览器中永远不会到达此处)。

var appEvents = (function() {
    'use strict';
    var instance;

    function init() {

        return {
            addHandler: function(element, type, handler) {
                if (element.addEventListener) {
                    element.addEventListener(type, handler, false);
                } else if (element.attachEvent) {
                    element.attachEvent('on' + type, handler);
                } else {
                    element['on' + type] = handler;
                }
            },
            removeHandler: function(element, type, handler) {
                if (element.removeEventListener) {
                    element.removeEventListener(type, handler, false);
                } else if (element.detatchEvent) {
                    element.detatchEvent('on' + type, handler);
                } else {
                    element['on' + type] = null;
                }
            },
        };
    }

    return {
        getInstance: function() {
            if (!instance) {
                instance = init();
            }
            return instance;
        }
    };
})();

var appEventsInstance = appEvents.getInstance();
var input = document.querySelector('#ZCHADR5');
var handler = function(event) {
   // define event
}
// call addHandler
appEventsInstance.addHandler(input, 'onkeypress', handler);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM