2016-05-17 29 views
0

我試圖格式化我想爲最小值001使用HTML5使用格式值的圖案類型數

我輸入的值的輸入,並作爲最大值999 當我鍵入1,我需要的價值001 而10是翻譯在010

我必須解決的位數爲3 就是這樣「%03D」

我已經互聯網上查了同樣的效果找到一個解決方案可能是我的輸入模式,但經過很多嘗試,我仍然卡住了。

我創建了一個接口,我想爲我輸入的Number類型定義一個特定的格式。 此格式爲3位數的格式。 因此,如果您輸入1,輸入必須更正值並轉換爲001 ...或者它可以保留舊值並忘記錯誤值。

input(type =「number」min =「001」max =「999」pattern =「xxxx」,style =「width:45px; text-align:center」)。input-sm#inputDut2-int

我知道,或者我認爲至少,我可以用一種模式解決這個問題。

+0

的可能重複http://stackoverflow.com/questions/2686855/:

在這個文本輸入,你可以簡單地通過填充值的格式輸入的要求, is-there-a-javascript-function-that-c​​an-pad-a-string-to-get-a-determined-leng –

+0

謝謝你。我已經嘗試過這樣的事情。但是,當我使用輸入右側的箭頭來控制輸入的值時,如果我的實際值是001,並且我單擊+1箭頭,則下一個值是2.任何小於3的數字musn我不存在。 – RaiZer

回答

0

在數字輸入上,您將無法輸入「012」,因爲012 === 12. 您改爲使用文本輸入。

function padLeftWithBounds(input, padChar, maxLength, min, max) { 
 
    if (input <= min) 
 
    return min; 
 
    if (input >= max) 
 
    return max; 
 

 
    var s = input.toString(10); 
 
    var padding = ""; 
 
    for (var i = 0; i < maxLength; ++i) 
 
    padding += padChar; 
 

 
    return padding.substring(0, maxLength - s.length) + s; 
 
}; 
 

 
$("input").on("keyup", function() { 
 
    if (!$(this).val()) 
 
    return; 
 
    $(this).val(padLeftWithBounds(parseInt($(this).val()), '0', 3, 0, 999)); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
    <input type="text" /> 
 
</form>

+0

我的問題來自輸入值的顯示。我不想處理輸入中的字符串,而是強制輸入一個格式,以便用戶不能輸入任何其他3位數的數字。對不起,如果我的問題不明確 – RaiZer

+0

確實不清楚:) –

+0

我會編輯並嘗試使其更清楚:編輯3 – RaiZer