2016-04-22 9 views
0

Ich benutze die Zahlenformatierung (wNumb) für ein Textfeld. Es wird durch den Bereichsschieberegler (noUislider) aktualisiert und das funktioniert gut.Übergeben Sie den Anfangswert bei der Verwendung der Javascript-Nummer Formatierung

Die Frage, die ich erlebt habe, ist, dass wenn ich senden Sie das Formular, der gespeicherte Wert von 1000 (wahrscheinlich aufgrund der Tausendertrenn) unterteilt ist.

Wie kann ich die wNumb Formatierung beim Senden loswerden?

... 
<%= f.text_field :salary, id: "how-much" %> 

<div id="slider-format"></div> 

    <div class="field"> 
    <%= f.label :comment %><br> 
    <%= f.text_area :comment %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
</div> 

Dann wird das Skript unter:

<script> 
var sliderFormat = document.getElementById('slider-format'); 

noUiSlider.create(sliderFormat, { 
    start: [ 200000 ], 
    step: 1000, 
    connect: 'upper', 
    range: { 
     'min': [ 10000 ], 
     'max': [ 250000 ], 
    }, 
    format: wNumb({ 
     decimals: 0, 
     thousand: '.', 
     postfix: ' (US $)', 
    }) 
}); 

var inputValue = document.getElementById('how-much'); 

sliderFormat.noUiSlider.on('update', function(values, handle) { 
    inputValue.value = values[handle]; 
}); 

inputValue.addEventListener('change', function(){ 
    sliderFormat.noUiSlider.set(this.value); 
}); 
</script> 

Die Anweisungen auf http://refreshless.com/wnumb/ sind die folgenden ... Ich verstehe nicht, wie das verwenden, wenn das ist, was soll ich verwenden.

Usage 
var moneyFormat = wNumb({ 
    mark: '.', 
    thousand: ',', 
    prefix: '$ ', 
    postfix: ' p.p.' 
}); 

// Format a number: 
moneyFormat.to(301980.62); 
=> '$ 301,980.62 p.p.' 

// Get a number back: 
moneyFormat.from('$ 301,980.62 p.p.'); 
    => 301980.62 
+0

Klärung von Zweifeln - möchten Sie einen Wert von 301980,62 anstelle von $ 301,980.62 p.p. Oder wenn Ihr Formatierer nicht richtig funktioniert? – Bhumika107

+0

Ich möchte, dass der Benutzer 301980 setzt, dies würde als $ 301.980 angezeigt werden, aber wenn Sie auf die Schaltfläche zum Absenden des Formulars klicken, erhalten Sie 301980 erneut. Für den Moment bekomme ich 301 in der Datenbank ... Der letzte Block des Codes ist nicht von mir, es ist von der Dokumentation und ich weiß nicht, wie man das mit meinem Code benutzt. – Sbe88

Antwort

0

Während Wert auf Eingabe zu speichern, müssen Sie Zahlen nur zu einigen Attribut der Eingabe-Tag hinzufügen.

sliderFormat.noUiSlider.on('update', function(values, handle) { 
    inputValue.value = values[handle]; 
    $(inputValue).attr("actual", parseFloat(values[handle]).toString().replace('.','')); 
}); 

Und dann können Sie Wert mit attr actual ersetzen, während Formular aus.

$("form").on("submit",function() { 
    $("#how-much").val($("#how-much").attr("actual")); 
}); 

Ich hoffe, dass dies nach Ihren Anforderungen funktioniert.

+0

Vielen Dank! In der Zwischenzeit habe ich eine Schleife gemacht, die auch funktioniert wie viel ist jetzt versteckt. Slider Updates -> wie viel wie viel Updates -> ein neues Feld namens "angezeigt" angezeigt Updates -> Slider – Sbe88

0

Ich denke, das Problem mit tausend Eigentum, geben Sie. anstelle von,

+0

Danke für deine Antwort, aber statt. ändert nichts an dem Problem. – Sbe88