Zuerst erkennen, ob der Browser HTML 5 verarbeiten kann dann so etwas wie folgt verwenden:
$('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();
}
});
Da Sie den input[type=range]
Selektor kann ich mit dem $(item).attr('min') && $(item).attr('min')
Ansatz gehen musste, wird dies ein wenig seltsam erhalten wenn Sie andere Arten von Eingabesteuerelementen mit diesen beiden Attributen haben.
Ich mag es. Vielleicht etwas wie 'jQuery.support.rangeInput = ((jQuery.browser.safari) || (jQuery.browser.opera && jQuery.browser.version> = 2.0))' um nach Eingabeunterstützung für Bereiche zu suchen? –
Danke für das Ausfüllen des Codes :) –
Ich hätte eine progressive Verbesserung zu gradeful Degradierung vorgezogen, da es möglich ist, dass ich auf einen Browser stoße, der '' noch Javascript hat, also die Eingaben wird nie umgewandelt werden. Immerhin beantwortet es zumindest die Frage. –