使用 Javascript 数字格式时提交初始值
Submit initial value when using Javascript number formatting
我正在为文本字段使用数字格式 (wNumb)。它由范围滑块 (noUislider) 更新并且工作正常。
我遇到的问题是 当我提交表单时,保存的值除以 1000(可能是由于千位分隔符)。
如何在提交时去掉 wNumb 格式?
...
<%= 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>
然后是下面的脚本:
<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>
http://refreshless.com/wnumb/ 上的说明如下...如果这是我应该使用的,我不明白如何使用它。
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
我想,千 属性 的问题,你给了。而不是
在将值保存到输入时,您只需要将数字添加到输入标签的某些属性。
sliderFormat.noUiSlider.on('update', function( values, handle ) {
inputValue.value = values[handle];
$(inputValue).attr("actual", parseFloat(values[handle]).toString().replace('.',''));
});
然后你可以在提交表单时用attr替换值actual
。
$("form").on("submit",function() {
$("#how-much").val($("#how-much").attr("actual"));
});
希望这能满足您的要求。
我正在为文本字段使用数字格式 (wNumb)。它由范围滑块 (noUislider) 更新并且工作正常。
我遇到的问题是 当我提交表单时,保存的值除以 1000(可能是由于千位分隔符)。
如何在提交时去掉 wNumb 格式?
...
<%= 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>
然后是下面的脚本:
<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>
http://refreshless.com/wnumb/ 上的说明如下...如果这是我应该使用的,我不明白如何使用它。
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
我想,千 属性 的问题,你给了。而不是
在将值保存到输入时,您只需要将数字添加到输入标签的某些属性。
sliderFormat.noUiSlider.on('update', function( values, handle ) {
inputValue.value = values[handle];
$(inputValue).attr("actual", parseFloat(values[handle]).toString().replace('.',''));
});
然后你可以在提交表单时用attr替换值actual
。
$("form").on("submit",function() {
$("#how-much").val($("#how-much").attr("actual"));
});
希望这能满足您的要求。