2012-11-20 22 views
8

Mam dane wejściowe zakresu html5 i wejście pola tekstowego. Po zmianie zakresu pole tekstowe zostanie zaktualizowane. Ale co mam zrobić, aby po wprowadzeniu numeru w polu tekstowym wprowadzanie zakresu zostało zaktualizowane?Jak zaktualizować zakres html5 przy zmianie wprowadzania tekstu?

To jest mój bieżący kod:

<div> 
<input id="slider" type="range" min="0" max="200" /> 
<input id="box" type="text" value="0"/> 
</div> 

<script> 
var slider = document.getElementById('slider'); 
$('#box').change(function(){slider.value=parseInt(this.value)}); 
</script> 

Kiedy edytować pole tekstowe, mój suwak (wejście zakres) nie zmienia się. Co ja robię źle? Czy to możliwe, że nie powinienem używać suwaka.value do aktualizacji suwaka? Jeśli to jest powód, jaki jest właściwy sposób, aby to zrobić?

+2

'change' jest wywoływane po naciśnięciu klawisza Enter/Rozmycie, potrzebne jest zdarzenie oparte na kluczach, aby zmienić je w zależności od typów użytkownika - czy tego właśnie chcesz? –

+0

Aby zmienić, gdy typy użytkownika korzystają ze zdarzenia 'keyup' (http://api.jquery.com/keyup), które wyzwala po powrocie klawisza. –

Odpowiedz

0

This fiddle works:

var slider = document.getElementById('slider'); 
$('#box').change(function(){ 
    slider.value=parseInt(this.value); 
}); 

(Więc to jest twój aktualny kod, faktycznie importować bibliotekę jQuery.?)
Pamiętaj, że masz ustawiony zakres suwaka do 200. Spróbuj kilka wartości pomiędzy 0 i 200.

0

To całkiem proste. Wszystko jest napisane w jQuery Tools API documentation. Więc zmieniłem kod do tego i zadziałało:

<div> 
<input id="slider" type="range" min="0" max="200" /> 
<input id="box" type="text" value="0"/> 
</div> 
<script> 
var sliderapi = $("#slider").data("rangeinput"); 
$('#box').change(function(){sliderapi.setValue(parseInt(this.value))}); 
</script> 
1

po mojej stronie zrobiłem to po prostu w JavaScript i dodałem zdarzenie onchange.

Dodałem również wartość = 0 do zakresu, aby zacząć od początku.

<div> 
<input id="slider" type="range" min="0" max="200" value="0"/> 
<input id="box" type="text" value="0"/> 
</div> 

var slider = document.getElementById('slider'); 
var box = document.getElementById("box"); 

slider.onchange = function(){ 
    box.value = slider.value; 
} 

I dodać to, jeśli chcesz, aby to działało na obu stronach

box.onkeyup = function(){ 
     slider.value = box.value;  
} ​ 
+0

Możesz zajrzeć http://jsfiddle.net/tAs6V/1/ –

0
$('#box').change(function(){ 
    $('#slider').attr({"value":parseInt(this.value)}); 
}); 

może działać.

2

Jest to prosty skrypt, po prostu to zrobić:

<label for=range1>Slide, then press "Click to search slider value"</label> 
<span>-1000 </span><input type="range" id="slide1" min="-1000" max="1000" value=0 step=0.25 onchange="printValue('slide1', 'rangeValue1')"><span> 1000 </span> 
<i><input type=text id="rangeValue1" value=0 width=25% onchange="slideValue('slide1', 'rangeValue1');"><span> is the value of the slider now</span></i><br/><br/> 
<script> 
function printValue(sliderID, spanbox) { 
    var x = document.getElementById(spanbox); 
    var y = document.getElementById(sliderID); 
    x.value = y.value; 
} 
function slideValue(sliderID, spanbox){ 
    var x = document.getElementById(spanbox); 
    var y = document.getElementById(sliderID); 
    y.value = parseInt(x.value); 
} 

window.onload = function() { printValue('slide1', 'rangeValue1'); } 

</script> 

(oczywiście, to działa tylko po naciśnięciu klawisza ENTER i dostarczą wartości do "onchange")

+0

parseInt() pozwala na użycie "jeden" do "dziesięć" w polu tekstowym i zmienić wartość pola tekstowego. – user2425429

12

Hej wszystkim tych, którzy don „t wiedzieć, że nie potrzebujemy żadnych JS lub jQuery dla tego

<form> 
 
    <div> 
 
    <input for="amount" oninput="amount.value=rangeInput.value" id="slider" type="range" min="0" max="200" name="rangeInput" /> 
 
    <input oninput="rangeInput.value=amount.value" id="box" type="text" value="0" name="amount" for="rangeInput" oninput="rangeInput.value=amount.value" /> 
 
    </div> 
 
</form>

+0

W rzeczywistości OP chce czegoś przeciwnego: wpisz liczbę i zobacz zmianę pozycji kursora suwaka. Ale twoje demo nadal działa dobrze: http://jsfiddle.net/gael/tAs6V/27/ – Gael

+0

Logika będzie taka sama Sprawdź Drogi http://jsfiddle.net/tAs6V/29/ @Gael –

+1

Nie zgadzałem się z :) – Gael

Powiązane problemy