Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在旧浏览器中验证输入[type=“number”]?_Javascript_Html - Fatal编程技术网

Javascript 如何在旧浏览器中验证输入[type=“number”]?

Javascript 如何在旧浏览器中验证输入[type=“number”]?,javascript,html,Javascript,Html,我喜欢HTML5约束验证,因为它提供了一个定义的标准语法来指定如何允许输入,如何不允许输入,并防止跨项目的不同实现 然而,最大的问题是,许多人仍然使用像IE8这样的旧浏览器,因为许多人仍然使用Windows XP,IE8是他们自动获得的最后一次更新 如何通过javascript验证这种类型的输入,并继续使用HTML5语法?当浏览器不支持输入[type=“number”]时,您可以使用polyfills添加对输入的支持,例如 如果您只想验证它们,我创建了这个函数(它应该支持数字的所有约束属性),它

我喜欢HTML5约束验证,因为它提供了一个定义的标准语法来指定如何允许输入,如何不允许输入,并防止跨项目的不同实现

然而,最大的问题是,许多人仍然使用像IE8这样的旧浏览器,因为许多人仍然使用Windows XP,IE8是他们自动获得的最后一次更新


如何通过javascript验证这种类型的输入,并继续使用HTML5语法?

当浏览器不支持输入[type=“number”]时,您可以使用polyfills添加对输入的支持,例如

如果您只想验证它们,我创建了这个函数(它应该支持数字的所有约束属性),它对我来说很好,但欢迎您指出我犯的任何错误:

function validateNumbers(){
    var returner = true;
    $(this).find('input[type="number"]').each(function(i){
        var valor = $(this).val();
        var max = $(this).attr("max");
        var min = $(this).attr("min");
        var step = $(this).attr("step");
        var decimals = 0;
        if(typeof step == 'undefined'){
            step = "1";
        }
        if(typeof valor != 'undefined' && typeof valor.split(".")[1] != 'undefined' && typeof step.split(".")[1] != 'undefined') {
            decimals = (valor.split(".")[1].length>step.split(".")[1].length)?valor.split(".")[1].length:step.split(".")[1].length;
        } else if((typeof valor == 'undefined'||typeof valor.split(".")[1] == 'undefined') && typeof step.split(".")[1] != 'undefined'){
            decimals = step.split(".")[1].length;
        } else if((typeof step.split(".")[1] == 'undefined') && typeof valor != 'undefined' && typeof valor.split(".")[1] != 'undefined'){
            decimals = valor.split(".")[1].length;
        }
        var multiplier = "1";
        for (var i=0;i<decimals;i++){
            multiplier += "0";
        }
        valor = valor*multiplier;
        max = max*multiplier;
        min = min*multiplier;
        step = step*multiplier;
        if(isNaN(valor)||(!isNaN(max)&&valor>max)||(!isNaN(min)&&valor<min)||(!isNaN(step)&&(valor-(isNaN(min)?0:min))%step!=0)){
            //$(this).parent().addClass("error"); or however you show errors
            returner = false;
        }
    });
    return returner;
}
函数validateEnumbers(){
var returner=true;
$(this).find('input[type=“number”]”)。每个(函数(i){
var valor=$(this.val();
var max=$(this.attr(“max”);
var min=$(this.attr(“min”);
var step=$(this.attr(“step”);
var小数=0;
如果(步骤的类型==“未定义”){
步骤=“1”;
}
如果(勇气的类型!='undefined'和勇气的类型分割(“.”[1]!='undefined'和步骤分割的类型(“.”[1]!='undefined')){
小数=(valor.split(“.”[1]。长度>步长。split(“.”[1]。长度)?valor.split(“.”[1]。长度:步长。split(“.”[1]。长度;
}else if((typeof valor='undefined'| | typeof valor.split(“.”[1]='undefined')和&typeof step.split(“.”[1]!='undefined')){
小数=步长拆分(“.”[1]。长度;
}else if((步骤分割的类型(“.”[1]=”未定义“)&&typeof valor!=”未定义“&&typeof valor.split(“.”[1]!=”未定义“){
小数=valor.split(“.”[1]。长度;
}
var乘数=“1”;
对于(var i=0;imax)| |(!isNaN(min)&&valor)