0

私は自分で物事を理解したり、他の人が投稿したり、すでに質問して解決したことから学びたいので、助けを求めるのは嫌いです. これが私の最初の投稿です!

これは、非常に単純で、物事を複雑にしすぎているか、間違った方法で行っているかのいずれかです。2時間以上ずっとあちこち探してます。私は正確にはjsの初心者ではありませんが、私はまだ一種の初心者です。誰でも....

私がやろうとしていること:

だから私は<input type="number" maxlength="4" .../> 、ユーザーが100から8000までの4桁の数字(4桁である必要があります)を入力する数字入力ボックスを持っています。したがって、明らかに100から999は0100から0999になります。

これまでのところ問題ありません。文字列を使用して、変数を4桁として渡すことができます。

私が抱えている問題は、入力を検証するために特定の条件を追加する必要があることです。1つの条件が私を悩ませています。これは私がこれまでに持っているものです:

(var x は既にフォームと数値入力ボックスに設定されています)

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

したがって、それらはすべて次の場合に有効です。x<0100

ユーザーが 99 を入力すると、4 桁ではないためフラグが立てられ、0099 を入力すると、それを受け入れて残りの機能コードを実行します。

0001 から 0099 までの任意の金額を警告するだけです。

私は別の投稿を見つけました, javascriptで8桁の数字を作るには? 、一種の関連性がありますが、男はゼロで埋められた数値を出力したいだけです。私は解決策の1つ(以下のコード)が私に役立つかもしれないと思いますが、私はかなり疲れていて、脳が混乱していて、新しいので解決できません:

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

私はそれを次のように編集することから始めます:

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

(しかし、これは 0099 ではなく 99 を入力した場合にのみ機能します...私の意味がわかれば)

コードの逆(0099から99.00に分割)のようになると思いますが、ステートメントは次のようになります:if(.... && i<==99 || ....)しかし、JSでそれを書く方法はわかりません...

よし、セミ/クオータリーの初心者である私が、これがどのように私の心を混乱させているか見てみよう!!

申し訳ありませんが、正しくフォーマットされておらず、長い間、コード関数の使用方法を把握していません...

そして、これを読んでくれてありがとう(ここまで来たら)。

前もって感謝します

スラッピーX

4

3 に答える 3

2

数値は8 進数( 10 進数)0100として扱われます。64

文字列と比較するだけでうまくいくと思います:

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

それ以外の場合はx、 を数値に変換して と比較する必要があり100ます。

+x < 100 || +x > 8000

(実際には、明示的に変換する必要はありませxんが、害はなく、比較しているデータ型が明確になります)

更新:そして、私が見る限りで&&置き換える必要があります。||

于 2011-09-12T00:47:28.530 に答える
0

これらの方法を組み合わせてみてください。

自分の番号が実際に最初に番号であることを確認する必要があります(つまり、文字などが含まれていません)。このメソッドを呼び出して、番号が有効な数値であることを確認してください。

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

番号を処理していることを確認したら、(必要に応じて)次のように番号を埋めることができます。

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

埋め込み数値を操作するには、実際に値を文字列に変換する必要があります。

于 2011-09-12T00:50:36.287 に答える
0

xが と の間にある0001かどうかを確認するには、次の0099ようにします。

if (x.match(/00([1-9][0-9]|0[1-9])/))
于 2011-09-12T00:45:36.347 に答える