私の検証スクリプトで問題が発生し、オーストラリアのポストコードを確認しました。 ポストコード値を含む多次元配列にはインクリメントしていないようです。ここで javascript多次元配列の複数の範囲で値を検証する
は機能だ:それだけで1000年と2599年を返していますranges = [ [1000, 2599], [2619, 2898], [2921, 2999] ];
例えば、ニューサウスウェールズ州のために
function validateAustralia(postcode, ranges) {
for (var i = 0; i < ranges.length; i++) {
console.log(i);
//returns only 0, when it should return 0, 1, 2.
console.log("postcode: " + postcode + " " + "ranges: " + ranges);
//returns postcode: 2000 ranges: 200,299,2600,2618,2900,2920
console.log("ranges - low: " + ranges[2][0] + " " + "ranges - high: " + ranges[2][1]);
//returns ranges - low: 2900 ranges - high: 2920
if (postcode >= ranges[i][0] && (postcode <= ranges[i][1])) {
valid = true;
//confirmation();
//break;
} else {
inelegible();
return false;
}
}
}
- つまり、範囲[0] [0]と範囲[0 ] [1] だから、ダボの郵便番号を入力している人(ニューサウスウェールズ州にある)は、その郵便番号 - 2830 - が1000と2599の間でないため無効とみなされます。
jQuery's $ .each()は最初の配列を正しく反復処理しますが、2番目のレベルの配列から値を取得する方法がわかりません。
編集: これは深夜だったので、私は目が見えません。 以下の答えはほとんどの回答者があり、ここの友人もそれを指摘しました。最初の実行後に繰り返しを終了します。 それ以外の場合はループの外側にループし、郵便番号が範囲内にあるかどうかをテストするだけです。もしそうなら、それは有効です。有効な場合 はその後、= trueが、私は確認機能を呼び出し、他のすべては良いです:私はここに新たなんだので
function validateAustralia(postcode, ranges) {
for (var i = 0; i < ranges.length; i++) {
console.log(i);
// returns 0, 1, 2 ...
console.log("postcode: " + postcode + " " + "ranges: " + ranges);
// for Dubbo (2830), for example, returns postcode: 2830 ranges: 1000,2599,2619,2898,2921,2999
console.log("ranges - low: " + ranges[i][0] + " " + "ranges - high: " + ranges[i][1]);
// returns ranges - low: 1000 ranges - high: 2599,
// ranges - low: 2619 ranges - high: 2898, ...
if (postcode >= ranges[i][0] && (postcode <= ranges[i][1])) {
valid = true;
// alert("valid =" + valid);
}
if (valid === true) {
confirmation();
// all good
} else {
inelegible();
// Sorry, mate
}
}
}
は、(長い時間リスナー、初めて呼び出し側が)私は自分の質問に答えることができません、それは基本的にそれです。ここで
は@nnnnnnと見たい他の誰のためのHTMLと、呼び出し側の関数です: ユーザーが選択
<select id="states" name="states">
<option selected="" value="">Please choose ...</option>
<optgroup label="Australia" id="australia">
<option value="act">Australian Capital Territory </option>
<option value="nsw">New South Wales </option>
<!-- ...and so on for the rest of the states -->
から自分の状態を選択し、テキストボックス
<input id="postcode" name="postcode" type="text" maxlength="4" />
に自分の郵便番号を入力します私は以下のようなものを
postcode = $('#postcode').val();
を取得し、チェック
郵便番号の範囲は
function checkAustralia(state, postcode, ranges) {
// has to be in the range of values
switch (state) {
//Australian states
//match the whole postcode
//postcodes with a leading '0' are validated as whole numbers without the '0'
case 'act':
ranges = [ [200, 299], [2600, 2618], [2900, 2920] ];
validateAustralia(postcode, ranges);
break;
case 'nsw':
ranges = [ [1000, 2599], [2619, 2898], [2921, 2999] ];
validateAustralia(postcode, ranges);
break;
// ...and so on for the rest of the states
範囲を記録するとどうなりますか?それはあなたが期待しているものですか?あなたが1回の反復を経なければ、おそらく範囲がうまく形成されていないでしょうか? – thescientist
1.あなたの関数を呼び出すコードを投稿できますか?あなたはNSWの範囲の例を挙げてきましたが、正確にどのようにそれを伝えているのかは分かりません。 2.このようなことは、サーバー側で検証されるべきではありませんか? – nnnnnn
ありがとう、私は今それをカバーしていると思う。 @ thescientistそれは反復を停止した偽falseでした。 @nnnnnn 1.教育目的のために、私は呼び出し関数2を投稿します。私はそれをサーバー側でやってほしいと思っていますが、それは私たちと一緒に作業しなければならないものです:) –