Estou criando um site onde desejo usar o controle deslizante de intervalo (sei que ele só oferece suporte a navegadores webkit).
Eu o integrei totalmente e funciona bem. Mas eu gostaria de usar um textbox
para mostrar o valor do slide atual.
Quer dizer, se inicialmente o controle deslizante está no valor 5, na caixa de texto ele deve mostrar como 5, quando eu deslizo o valor na caixa de texto deve mudar.
Posso fazer isso usando apenas CSS
ou html
. Eu quero evitar JQuery
. É possível?
:before
/:after
,content
eattr()
, como este . No entanto, os pseudo-elementos: before /: after realmente consomem parte do intervalo do controle deslizante (embora talvez isso seja corrigível) e, o mais importante, os valores não são atualizados se o controle deslizante for manipulado. Mesmo assim, achei que seria interessante deixar isso aqui. Pode ser possível no futuro.Respostas:
Isso usa javascript, não jquery diretamente. Isso pode ajudar você a começar.
fonte
code
<label for = "rangeinput"> Intervalo </label> <input id = "rangeinput" type = "range" min = "0" max = "10" value = "5" onchange = "rangevalue.value = value"> </input> <output id = "rangevalue"> 5 </output>Para aqueles que ainda procuram uma solução sem um código javascript separado. Há pouca solução fácil sem escrever uma função javascript ou jquery:
JsFiddle Demo
Se você quiser mostrar o valor na caixa de texto, simplesmente altere a saída para a entrada.
Atualizar:
Use o ID ou o nome do elemento, ambos são suportados nos navegadores Morden.
fonte
versão com entrada editável:
http://jsfiddle.net/Xjxe6/
fonte
this.nextElementSibling
outhis.previousElementSibling
e substitua oninput por onchange para obter uma versão que funcione fora de um formulário. jsfiddle.net/Xjxe6/94uma maneira ainda melhor seria capturar o evento de entrada na própria entrada em vez de no formulário inteiro (em termos de desempenho):
Aqui está um violino (com o
id
adicionado de acordo com o comentário de Ryan).fonte
id="amount"
para a saída também.oninput="this.form.amount.value=this.value"
Se você deseja que seu valor atual seja exibido abaixo do controle deslizante e se mova junto com ele, tente o seguinte:
Observe que este tipo de elemento de entrada HTML tem um recurso oculto, como você pode mover o controle deslizante com as teclas de seta para a esquerda / direita / para baixo / para cima quando o elemento estiver focado nele. O mesmo com as teclas Home / End / PageDown / PageUp.
fonte
Se estiver usando vários slides e puder usar jQuery, você pode fazer o seguinte para lidar com vários controles deslizantes facilmente:
Além disso, ao usar
oninput
no,<input type='range'>
você receberá eventos enquanto arrasta o intervalo.fonte
Versão mais curta, sem
form
,min
ou JavaScript externo.fonte
Para as pessoas que não se importam com o uso do jquery, aqui está um pequeno caminho sem usar qualquer id
fonte
Tenho uma solução que envolve JavaScript (Vanilla), mas apenas como biblioteca. Você costuma incluí-lo uma vez e, em seguida, tudo o que precisa fazer é definir o
source
atributo apropriado das entradas numéricas.O
source
atributo deve ser oquerySelectorAll
seletor da entrada de intervalo que você deseja ouvir.Ele até funciona com selectcs. E funciona com vários ouvintes. E funciona na outra direção: mude a entrada de número e a entrada de faixa será ajustada. E funcionará em elementos adicionados posteriormente na página (verifique https://codepen.io/HerrSerker/pen/JzaVQg para isso)
Testado no Chrome, Firefox, Edge e IE11
fonte
fonte
Experimente isto:
e na seção jQuery :
fonte
se você ainda está procurando a resposta, pode usar input type = "number" no lugar de type = "range" min max work se for definido nessa ordem:
1-name
2-maxlength
3-size
4-min
5-max
apenas copie
fonte