Primera detectar si el navegador puede manejar HTML 5 a continuación, utilizar algo como esto:
$('input').each(function (i, item) {
if ($(item).attr('min') !== undefined && $(item).attr('max') !== undefined) {
var select = document.createElement("SELECT");
$(select).attr('name', $(item).attr('name'));
$(select).attr('id', $(item).attr('id'));
$(select).attr('disabled', $(item).attr('disabled'));
var step = 1;
if ($(item).attr('step') !== undefined) {
step = parseFloat($(item).attr('step'));
}
var min = parseFloat($(item).attr('min'));
var max = parseFloat($(item).attr('max'));
var selectedValue = $(item).attr('value');
for (var x = min; x <= max; x = x + step) {
var option = document.createElement("OPTION");
$(option).text(x).val(x);
if (x == selectedValue) { $(option).attr('selected', 'selected'); }
$(select).append(option);
};
$(item).after(select);
$(item).remove();
}
});
Como no se puede utilizar el selector de input[type=range]
tuve que ir con el enfoque $(item).attr('min') && $(item).attr('min')
, esto va a ser un poco raro si tiene otros tipos de controles de entrada con esos dos atributos.
Me gusta. Tal vez algo así como 'jQuery.support.rangeInput = ((jQuery.browser.safari) || (jQuery.browser.opera && jQuery.browser.version> = 2.0))' para verificar el soporte de entrada de rango? –
Gracias por completar el código :) –
Hubiera preferido la mejora progresiva a la degradación elegante, ya que es posible que encuentre un navegador que no admita '' ni Javascript activado, por lo que las entradas nunca se convertirá Aún así, al menos responde la pregunta. –