2011-09-12 46 views
0

我討厭尋求幫助,因爲我寧願爲自己弄點東西,或者從其他人發佈或已經問過的東西中學習並解決。因爲這是我的第一篇文章!javascript:試圖驗證一個數字必須是4位數字才能看到x <100(即0100)

這要麼是真的很簡單,要麼是複雜的事情,要麼是以錯誤的方式去做。我到處搜尋了2個多小時。即時通訊不完全是在爵士noob,但我仍然有點新,我會說學習,ameteur? anywho ....

我所試圖做的事:

,所以我有一個數字輸入框<input type="number" maxlength="4" .../>,其中用戶將進入一個4位數字(必須是4個位數)爲100〜8000 。顯然100到999會是0100 - 0999。

到目前爲止沒有問題,我可以使用一個字符串將變量作爲4位數傳遞。

我遇到的問題是我需要添加一些條件來驗證輸入。一個條件是竊聽我。這是我到目前爲止有:

(VAR X已經設置的形式和數量輸入框)

if (x=="" || isNaN(x) || x.length!== 4 && x< 0100 || x>8000)
{alert(please enter the correct amount!}
else {run rest of function}

,使他們所有的工作execpt爲:x<0100

如果用戶輸入99它會標記,因爲它不是4位數,並且如果它們輸入0099,它將接受它並運行功能代碼的其餘部分。

我只需要它來從0001任何金額警惕0099.

我發現了另一篇文章,How to make 8 digit number in javascript?,有點相關,但這個傢伙只是想輸出補零的數字。我認爲其中一個解決方案(下面的代碼)可以用我,但因爲我累壞了,大腦疲憊和新我不能解決這個問題:

var i = (100).toPrecision(8).split('.').reverse().join('');

我會通過它編輯開始:

var i = (x).toPrecision(4).split('.').reverse().join('');

(但如果將它們輸入99沒有0099 ......如果你看見我的意思這只是工作)

我認爲它會像代碼(分割0099到99.00反向),然後聲明將是:if(.... && i<==99 || ....)但idk如何寫在JS ...

好吧,所以做亞你看這是如何與我心中攪亂,作爲一個半/季度noob和所有!

對不起它不正確格式化和這麼久,我還沒有掌握如何使用代碼函數...

,並感謝在閱讀這篇您的耐心(如果你有這麼遠嘿嘿)。

在此先感謝

Slappy-X

+1

你如何使用正則表達式來解決這個問題?如'^ [0-9] {4} $',如果number與上面的正則表達式不匹配,則相應地在前面加上0並重新匹配。 – Bassem

+0

在if條件的中間,把'&&'改成'||',並且說'x <100'而不是'x <0100'。 – nnnnnn

+0

當你想要實際的值(對於範圍)時,使用parseInt(x)。你在找什麼?檢查條件與整數 – galchen

回答

2

0100將被視爲八進制值數(這是十進制的64)。

我想你會通過只是比較對字符串做精:

x < "0100" || x > "8000" 

否則,您必須將x轉換爲數字並將其與100

+x < 100 || +x > 8000 

(其實你不沒有必要明確地轉換x,但它並沒有傷害,並且使得它更清楚您正在比較哪種數據類型)

更新:就我所見,您必須用||代替&&

0

要檢查是否x00010099之間,你可以做到這一點

if (x.match(/00([1-9][0-9]|0[1-9])/)) 
0

嘗試使用這些方法的組合。

你想檢查你的號碼是否是第一個號碼(即不包含字母等)。通過調用此方法來確認您的號碼是有效的數字值。

function isNumber(n) { 
    return !isNaN(parseFloat(n)) && isFinite(n); 
} 

一旦確認你正在處理一個號碼,你可以墊(如果需要)這樣的:

function pad(num, size) { 
    var s = "000" + num; 
    return s.substr(s.length-size); 
} 

要帶襯墊的數字工作,你確實有值轉換爲一個字符串。

相關問題