Đầu tiên phát hiện nếu trình duyệt có thể xử lý HTML 5 sau đó sử dụng một cái gì đó như thế này:
$('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();
}
});
Vì bạn không thể sử dụng bộ chọn input[type=range]
tôi đã phải đi với cách tiếp cận $(item).attr('min') && $(item).attr('min')
, này sẽ nhận được một chút lạ nếu bạn có các loại điều khiển đầu vào khác với hai thuộc tính đó.
Nguồn
2010-02-11 19:44:45
Tôi thích nó. Có lẽ một cái gì đó giống như 'jQuery.support.rangeInput = ((jQuery.browser.safari) || (jQuery.browser.opera && jQuery.browser.version> = 2.0))' để kiểm tra hỗ trợ đầu vào phạm vi? –
Cảm ơn bạn đã đưa ra mã :) –
Tôi sẽ ưu tiên cải tiến tiến trình xuống cấp độ duyên dáng vì có thể tôi gặp một trình duyệt không hỗ trợ '' cũng không có Javascript, vì vậy các đầu vào sẽ không bao giờ được chuyển đổi. Tuy nhiên, nó ít nhất là trả lời câu hỏi. –