2013-09-25 4 views
0

Мне нравится проверка ограничений HTML5, поскольку она предоставляет определенный и стандартный синтаксис, чтобы указать, как вход должен быть разрешен и как он не должен, и предотвращает различные реализации проектов.Как я могу проверить ввод [type = "number"] в старых браузерах?

Однако большая проблема заключается в том, что многие люди по-прежнему используют старые браузеры, такие как IE8, потому что многие люди все еще используют Windows XP, а IE8 - последнее обновление, которое они получают автоматически.

Как я могу проверить через javascript этот тип ввода и продолжать использовать синтаксис HTML5?

+0

https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills#web-forms – Bergi

ответ

1

Вы можете использовать polyfills для добавления поддержки ввода [type = "number"] при неподдерживаемом браузере, таком как Webshims.

Если вы хотите, чтобы проверить их, я сделал эту функцию (она должна поддерживать все ограничения для номеров атрибута объявления), он отлично работает для меня, но вы с удовлетворением отметить любую ошибку, которую я сделал:

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; 
} 
Смежные вопросы