2017-01-06 13 views
0

Ich habe ein Formular mit einer Reihe Input-
<input id="slider" type="range" min="0" max="120" step="40" val="40">Wie kann ich den Wert eines Eingabebereichs von einer Ganzzahl in eine Zeichenfolge ändern?

Statt darstellen ganze Zahlen I den Wert als String gesendet werden soll.
zB 0 = "Gefrieren", 40 = "Kühlen", 80 = "Warm", 120 = "Heiss"

Dies wird für den Empfänger sinnvoller. Wie kann ich eine Ganzzahl für ein Wort austauschen, bevor der Wert übergeben wird?

dachte ich eine jQuery if-Anweisung

$("#slider").change(function(){ 
    if('this').val(0) { 
    $('#slider').val("freezing") 
    } 
    else if('this').val(40) { 
    $('#slider').val("cool") 
    } 
    else if('this').val(80) { 
    $('#slider').val("warm") 
    } 
    else if('this').val(120) { 
    $('#slider').val("hot") 
    } 
console.log($('#slider').val()) 
}); 

Werk vielleicht weiß ich meinen Code falsch ist, so dass jede Hilfe die Logik/Syntax Reinigung ist sehr willkommen, vorausgesetzt, es ist möglich?

+0

'$ ('# slider'). Val() + ''' ist eine nette kleine Hack zu ändern einen beliebigen Typ (ziemlich) zu einem String, indem man ihn mit einem String verkettet. –

+0

Ich denke, es ist [this] (https://jsfiddle.net/k1g88s5m/1/)? – KiRa

+0

Danke. Um zu confi- Ich sollte $ ändern ('# slider'). Val ("cool") zu $ ​​('# slider'). Val() + 'cool'? Wäre der Wert zum Beispiel technisch nicht "40cool"? In meiner Form werden die ganzen Zahlen bedeutungslos sein, also möchte ich vermeiden, dass der Benutzer oder Empfänger sie überhaupt sieht. – webmasterWannabee

Antwort

0

Die Lösung in der Lage zu sein, zu bestehen Der neue Wert bis zum Formular besteht darin, ein verstecktes Feld mit demselben Namen wie die Eingabe zu verwenden. Der Ganzzahlwert wird in das ausgeblendete Feld übergeben, wo der Wert dann mit jQuery in eine Zeichenfolge geändert werden kann.

Ich setze den Anfangswert der versteckten Eingabe auf den Standard-Startwert des Daumens. Wenn der Benutzer auf diese Weise entscheidet, dass der Standardeintrag korrekt ist und ihn nicht ändert, sendet er den Wert immer noch an das Formular.

Ich habe auch eine console.log() hinzugefügt, damit ich überprüfen konnte, ob der Wert korrekt übergeben wurde und nicht nur in der Beschriftung.

html

<input id="bar" name="temperature" type="range" min="0" max="120" step="80" val="40"/> 

<input id="slider" type="hidden" name="temperature" value="Warm" /> 

<label id="labelTemp">Warm</label> 

jQuery

$("#bar").change(function() { 

var value = $(this).val(); 

if (value == 0) { 
    $("#slider").val("Freezing"); 
} 
    else if (value == 40) { 
    $("#slider").val("Cool"); 
} 
    else if (value == 80) { 
    $("#slider").val("Warm"); 
} 
    else if (value == 120) { 
    $("#slider").val("Hot"); 
} 

$("#labelTemp").text($("#slider").val()); 

console.log($("#slider").val()); 

}); 

Blick in jsfiddle https://jsfiddle.net/webmasterWannabee/gyv4rgws/#&togetherjs=dOh4uHa3MS

0

Ich denke, der Eingabebereichswert funktioniert nur mit einer Zahl und nicht den gewünschten Zeichenfolgen, aber Sie können Ihre Temperaturwerte in einem Etikett neben Ihrem Bereichsschieberegler anzeigen. Auf diese Weise wird der Benutzer den Schieberegler verschieben und einen Ihrer Temperaturwerte sehen, wenn sie den Schieberegler ändern.

können Sie tun dies wie:

HTML:

<input id="slider" type="range" step="40" val="40" min="0" max="120"></input> 

<label id="labelTemp"></label> 

Dann wird Ihr JavaScript/jQuery:

$("#slider").change(function(){ 
    var s = ""; 
    var value = $(this).val(); 

    if(value == 0){ 
     s = "Freezing"; 
    } 
    else if(value == 40){ 
     s = "Cool"; 
    } 
    else if(value == 80){ 
     s = "Warm"; 
    } 
    else if(value == 120){ 
     s = "Hot"; 
    } 

    $("#labelTemp").text(s); 
}); 

Hier ist ein jsfiddle zu zeigen, wie es funktionieren würde: https://jsfiddle.net/vsf42kej/1/

+0

Vielen Dank @JustSomeDude Ihre Lösung gab mir den richtigen Startpunkt, den ich brauchte. Nachdem mir gesagt wurde, dass ich eine versteckte Eingabe verwenden soll, konnte ich sie ändern und genau das erstellen, was ich brauchte, wie in meiner Antwort unten gezeigt. – webmasterWannabee

+0

@webmasterWannabee Ihre Antwort ist die gleiche wie meine, außer dass Sie einen zusätzlichen Schritt hinzugefügt haben, um einen Wert in ein verstecktes Feld zu setzen ... Das Schiebereglerelement ist ein Eingabeelement, dessen Wert mit dem Formular serialisiert wird das zusätzliche versteckte Feld. Wenn jemand etwas postet, das dir hilft, auf Folgendes zu verweisen: http://stackoverflow.com/help/someone-answers – JustSomeDude

+0

Das ist richtig, @JustSomeDude das versteckte Feld wurde hinzugefügt, weil es für mich nicht funktionierte, bis ich es tat. Ich erstelle dieses Formular in einem einzigartigen CMS (nicht reguläre Hand-Codierung in HTML), also vielleicht die Dinge geändert. Die Antwort, die ich gepostet habe, war diejenige, die für mich funktioniert hat, und deshalb wollte ich sie teilen, falls jemand anders in derselben Position war. Ich entschuldige mich auch dafür, dass ich die Litanei der Stackoverflow-Vorschriften nicht gelesen habe und die Galle habe, Ihnen zu danken. Zur Kenntnis genommen. – webmasterWannabee

Verwandte Themen