下面是我的代码:
<input type="range" name="slider" id="slider" value="5" min="0" max="10" step="1" />
我测试过的所有HTML5移动浏览器(iPhone 4, Android, iPad)都将其呈现为input type=text。为什么这个不能渲染滑块?
还不是所有的浏览器都支持。您总是可以使用http://www.modernizr.com/来测试浏览器是否支持它,然后使用http://jqueryui.com/作为备用。试试这样做。
var initSlider = function() {
$('input[type=range]').each(function() {
var $input = $(this);
var $slider = $('<div id="' + $input.attr('id') + '" class="' + $input.attr('class') + '"></div>');
var step = $input.attr('step');
$input.after($slider).hide();
$slider.slider({
min: $input.attr('min'),
max: $input.attr('max'),
step: $input.attr('step'),
change: function(e, ui) {
$(this).val(ui.value);
}
});
});
};
根据这篇文章,它没有在iOS 4.2中实现,也没有在Android 2.3中完全实现(不管这意味着什么)。我在iOS 4.3上进行了测试,看起来它仍然没有实现移动safari。
<input type="number"
似乎也不起作用
对input type="range"的支持已经在iOS 5中添加,所以你将在iOS 5中看到滑块,但在iOS 5之前没有。
基于Modernizr,测试input type="range"兼容性的最佳方法是:
var i = document.createElement("input"), safe = false;
i.setAttribute("type", "range");
if(i.type !== "text"){
i.value = ':)';
i.style.cssText = 'position:absolute;visibility:hidden;';
if (i.style.WebkitAppearance !== undefined ) {
document.documentElement.appendChild(i);
defaultView = document.defaultView;
safe = defaultView.getComputedStyle &&
defaultView.getComputedStyle(i, null).WebkitAppearance !== 'textfield' &&
(i.offsetHeight !== 0);
document.documentElement.removeChild(i);
}
}
return safe? '<input type="range" />': '<input type="number" />';
希望能有所帮助。