Forms 显示文本框而不是滑块的输入类型范围

Forms 显示文本框而不是滑块的输入类型范围,forms,html,mobile-website,Forms,Html,Mobile Website,这是我的密码: <input type="range" name="slider" id="slider" value="5" min="0" max="10" step="1" /> 我测试过的所有HTML5移动浏览器(iPhone4、Android、iPad)都将其呈现为输入类型=文本。为什么不显示滑块?并非所有浏览器都支持它。您始终可以使用来测试浏览器是否支持它,然后将其用作回退。试试这样的 var initSlider=function(){ $('input[type

这是我的密码:

<input type="range" name="slider" id="slider" value="5" min="0" max="10" step="1" />


我测试过的所有HTML5移动浏览器(iPhone4、Android、iPad)都将其呈现为输入类型=文本。为什么不显示滑块?

并非所有浏览器都支持它。您始终可以使用来测试浏览器是否支持它,然后将其用作回退。试试这样的

var initSlider=function(){
$('input[type=range]')。每个(函数(){
var$input=$(此);
变量$slider=$('');
var step=$input.attr('step');
$input.after($slider.hide();
$slider.slider({
最小值:$input.attr('min'),
max:$input.attr('max'),
步骤:$input.attr('step'),
更改:函数(e,ui){
$(this.val)(ui.value);
}  
});  
});  
};  
据了解,它并没有在iOS 4.2中实现,也没有在Android 2.3中完全实现(不管这意味着什么)。我在iOS 4.3上做了测试,看起来它还没有在mobile safari上实现


在iOS 5中添加了对输入类型=“range”的支持,因此您将在iOS 5中获得滑块,但之前没有。基于Modernizer,测试输入类型=“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" />';
var i=document.createElement(“输入”),safe=false;
i、 setAttribute(“类型”、“范围”);
如果(i.类型!=“文本”){
i、 值=':)';
i、 style.cssText='位置:绝对;可见性:隐藏;';
if(i.style.webkit外观!==未定义){
document.documentElement.appendChild(一);
defaultView=document.defaultView;
safe=defaultView.getComputedStyle&&
defaultView.getComputedStyle(i,null).WebkitAppearance!=='textfield'&&
(i.offsetHeight!==0);
document.documentElement.removeChild(i);
}
} 
安全返回?“”:“”;

希望有帮助。

我现在使用jQuery UI作为滑块。但这不支持在触摸浏览器中拖动滑块手柄。jquerymobile建议使用rangeform元素。关于如何在移动浏览器上使用滑动手柄,有什么建议吗?奇怪的是,mobile safari似乎实现了该属性,但显示为文本。当我测试属性“range”是否起作用时,这会在我的应用程序中导致一个bug,如果不起作用,则用一个选择框替换它。但在iPhone/iPad上,它并没有被选择框取代,而是显示一个带有普通键盘的文本框(例如输入型文本)。