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