中的貨幣我想將用戶輸入的數字格式化爲使用javascript的貨幣。這適用於<input type="text" />
。不過,在<input type="number" />
我似乎無法將該值設置爲包含非數字值的任何內容。下面撥弄顯示我的問題將值設置爲<input type =「number」/>
反正對我來說,該值設置爲類似$125.00
?
我想使用<input type="number" />
,所以移動設備知道要爲鍵盤輸入提供一個鍵盤。
中的貨幣我想將用戶輸入的數字格式化爲使用javascript的貨幣。這適用於<input type="text" />
。不過,在<input type="number" />
我似乎無法將該值設置爲包含非數字值的任何內容。下面撥弄顯示我的問題將值設置爲<input type =「number」/>
反正對我來說,該值設置爲類似$125.00
?
我想使用<input type="number" />
,所以移動設備知道要爲鍵盤輸入提供一個鍵盤。
最後我做了一個jQuery插件,它將爲我適當地格式化<input type="number" />
。我還注意到,在某些移動設備上,min
和max
屬性實際上並不會阻止您輸入比指定的數字更低或更高的數字,因此插件也會對此進行解釋。下面是代碼和一個例子:
(function($) {
$.fn.currencyInput = function() {
this.each(function() {
var wrapper = $("<div class='currency-input' />");
$(this).wrap(wrapper);
$(this).before("<span class='currency-symbol'>$</span>");
$(this).change(function() {
var min = parseFloat($(this).attr("min"));
var max = parseFloat($(this).attr("max"));
var value = this.valueAsNumber;
if(value < min)
value = min;
else if(value > max)
value = max;
$(this).val(value.toFixed(2));
});
});
};
})(jQuery);
$(document).ready(function() {
$('input.currency').currencyInput();
});
.currency {
padding-left:12px;
}
.currency-symbol {
position:absolute;
padding: 2px 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="number" class="currency" min="0.01" max="2500.00" value="25.00" />
添加step="0.01"
到<input type="number" />
參數:
<input type="number" min="0.01" step="0.01" max="2500" value="25.67" />
演示:http://jsfiddle.net/uzbjve2u/
但美元符號必須停留在文本框外......每一個非數字或分離charachter將被自動裁剪。您可以使用經典文本框like described here。
不是OP要求的...如果value =「25.6」這將顯示...它應該顯示「25.60」 – patrick
[HTML5規格/這個實現是越野車](https://bugzilla.mozilla.org/show_bug.cgi?id=1003896)@帕特里克。不過,除了[hackish,依賴於瀏覽器的解決方案](https://stackoverflow.com/a/19205426/1654265)之外,你想要的是不可能的,儘管它不適用於Firefox。我已經編輯了小提琴,因爲'全球化。格式'功能現在已經打破它*在FF中,所以我想我應該感謝你的反饋:) –
@AndreaLigios你所描述的經典鏈接textbox正是我在爲文本框設置貨幣的格式。我不得不做出一些改變,但這是一個很好的開始。 – Jester
當類型設置爲「數字」時,瀏覽器僅允許數字輸入。 Details here。
您可以使用TYPE =「text」和使用JavaScript like descripted here
看來,你需要兩個字段,對於貨幣的選擇列表和編號字段不是數字輸入過濾掉其他任何值。
在這種情況下,常見的技術是使用div或跨度顯示(表單域offscreen),並點擊切換到表單元素進行編輯。
這是比讓用戶輸入貨幣更好的選擇。 –
對不起,但這裏給出的jQuery示例和Dojo中的CurrencyTextBox提供了比兩個字段更方便用戶管理輸入和驗證的方法。除了在手機上,因爲你必須使用文本鍵盤。最終的諷刺是在我的iPad上,type =「number」包含我的區域設置的貨幣符號£。 HTML確實需要趕上,並提供一些切換到適當的鍵盤的貨幣。 –
你們是完全正確的電話號碼只能在數字字段中去。我用的是同樣的事情與已經在span標記了CSS樣式的上市:
<span>$</span><input type="number" min="0.01" step="0.01" max="2500" value="25.67">
然後加一點造型魔法:
span{
position:relative;
margin-right:-20px
}
input[type='number']{
padding-left:20px;
text-align:left;
}
你就不能顯示在$控制權的前面?或者你想讓用戶控制他們想要進入的貨幣?在後一種情況下,恐怕只有'type =「text」'有資格。 –
@MrLister這是一個很好的觀點。這可能是我最終會做的。 – Danny
如果您想允許用戶更改貨幣類型,但仍然執行'type =「number」',則可以選擇具有各種貨幣符號的框。請注意,許多國家將貨幣符號放在數字之後而不是之前。 – RoboticRenaissance