Диапазон ввода типа HTML5 показывает значение диапазона

Я создаю сайт, на котором я хочу использовать слайдер диапазона (я знаю, что он поддерживает только браузеры webkit).

Я полностью интегрировал его и отлично работаю. Но я хотел бы использовать текстовое поле для отображения текущего значения слайда.

Я имею в виду, если изначально ползунок имеет значение 5, поэтому в текстовом поле оно должно отображаться как 5, когда я сдвигаю значение в текстовом поле, должно измениться.

Могу ли я сделать это, используя только CSS или html. Я хочу избежать JQuery. Возможно ли это?

Ответ 1

Это использует javascript, а не jquery напрямую. Это может помочь вам начать работу.

function updateTextInput(val) {
          document.getElementById('textInput').value=val; 
        }
<input type="range" name="rangeInput" min="0" max="100" onchange="updateTextInput(this.value);">
<input type="text" id="textInput" value="">

Ответ 2

Для тех, кто все еще ищет решение без отдельного кода javascript. Существует мало простого решения без написания функции javascript или jquery:

<form name="registrationForm">
   <input type="range" name="ageInputName" id="ageInputId" value="24" min="1" max="100" oninput="ageOutputId.value = ageInputId.value">
   <output name="ageOutputName" id="ageOutputId">24</output>
</form>

JsFiddle Demo

Если вы хотите показать значение в текстовом поле, просто измените вывод на ввод.


Update:

Это все еще Javascript, написанный в вашем html, вы можете заменить привязки с кодом ниже JS:

 document.registrationForm.ageInputId.oninput = function(){
    document.registrationForm.ageOutputId.value = document.registrationForm.ageInputId.value;
 }

Использовать идентификатор или имя элемента, оба поддерживаются в браузерах morden.

Ответ 3

с редактируемым вводом:

<form>
    <input type="range" name="amountRange" min="0" max="20" value="0" oninput="this.form.amountInput.value=this.value" />
    <input type="number" name="amountInput" min="0" max="20" value="0" oninput="this.form.amountRange.value=this.value" />
</form>

http://jsfiddle.net/Xjxe6/

Ответ 4

еще лучший способ - поймать входное событие на самом входе а не на всю форму (производительность мудрая):

<input type="range" id="rangeInput" name="rangeInput" min="0" max="20" value="0"
       oninput="amount.value=rangeInput.value">                                                       

<output name="amount" for="rangeInput">0</output>

Здесь fiddle (с добавлением id в соответствии с комментарием Райана).

Ответ 5

Если вы хотите, чтобы текущее значение отображалось под ползунком и двигалось вместе с ним, попробуйте следующее:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>MySliderValue</title>

</head>
<body>
  <h1>MySliderValue</h1>

  <div style="position:relative; margin:auto; width:90%">
    <span style="position:absolute; color:red; border:1px solid blue; min-width:100px;">
    <span id="myValue"></span>
    </span>
    <input type="range" id="myRange" max="1000" min="0" style="width:80%"> 
  </div>

  <script type="text/javascript" charset="utf-8">
var myRange = document.querySelector('#myRange');
var myValue = document.querySelector('#myValue');
var myUnits = 'myUnits';
var off = myRange.offsetWidth / (parseInt(myRange.max) - parseInt(myRange.min));
var px =  ((myRange.valueAsNumber - parseInt(myRange.min)) * off) - (myValue.offsetParent.offsetWidth / 2);

  myValue.parentElement.style.left = px + 'px';
  myValue.parentElement.style.top = myRange.offsetHeight + 'px';
  myValue.innerHTML = myRange.value + ' ' + myUnits;

  myRange.oninput =function(){
    let px = ((myRange.valueAsNumber - parseInt(myRange.min)) * off) - (myValue.offsetWidth / 2);
    myValue.innerHTML = myRange.value + ' ' + myUnits;
    myValue.parentElement.style.left = px + 'px';
  };
  </script>

</body>
</html>

Ответ 6

Если вы используете несколько слайдов, и вы можете использовать jQuery, вы можете сделать следующее, чтобы легко справляться с несколькими слайдерами:

function updateRangeInput(elem) {
  $(elem).next().val($(elem).val());
}
input { padding: 8px; border: 1px solid #ddd; color: #555; display: block; }
input[type=text] { width: 100px; }
input[type=range] { width: 400px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="range" min="0" max="100" oninput="updateRangeInput(this)" value="0">
<input type="text" value="0">

<input type="range" min="0" max="100" oninput="updateRangeInput(this)" value="50">
<input type="text" value="50">

Ответ 7

<form name="registrationForm">
    <input type="range" name="ageInputName" id="ageInputId" value="24" min="1" max="10" onchange="getvalor(this.value);" oninput="ageOutputId.value = ageInputId.value">
    <input type="text" name="ageOutputName" id="ageOutputId"></input>
</form>

Ответ 8

Если вы все еще ищете ответ, вы можете использовать тип ввода = "число" вместо type = "range" min max work, если он установлен в следующем порядке:
1-имя
2-MaxLength
3 размера
4-минутная
5-макс
просто скопируйте его

<input  name="X" maxlength="3" size="2" min="1" max="100" type="number" />