2017-08-20 8 views
1

クーポンフィールドのあるページがある場合、そのページは誤った試行が3回しかないため、別のページにリダイレクトする必要があります。カウンタを設定しようとしましたが、動作させることができませんでした。以下のコードを参考にしてください。Javascriptで誤って3回試行した後にフォーム送信時にページにリダイレクトする

function validateCoupon() { 

    var couponkey = ["ABCDEF1", "ABCDEF2", "ABCDEF3", "ABCDEF4", "ABCDEF5", "ABCDEF6", "ABCDEF7"]; 

    var keyinput = $('#COUPON').val().trim().toUpperCase(); 


    if (couponkey.indexOf(keyinput) > -1) { 

    return true; 
    } 
else { 
    alert("Invalid Key"); 
    return false; 
    } 
} 

3回失敗すると、別のページにリダイレクトします。

+0

何をカウンターにしようとしましたか? – VA79

答えて

1

機能の内側にカウンタを置いておくことは可能でしょうか?これは、関数を呼び出すたびにリセットされている可能性があります。カウンターを機能の範囲外にすることができます。

これを試してください。あなたが閉鎖でグローバルスコープを汚染することなく、これを達成することができます

let timesAttemped = 0; 

function validateCoupon() { 

    var couponkey = ["ABCDEF1", "ABCDEF2", "ABCDEF3", "ABCDEF4", "ABCDEF5", "ABCDEF6", "ABCDEF7"]; 

    var keyinput = $('#COUPON').val().trim().toUpperCase(); 


    if (couponkey.indexOf(keyinput) > -1) { 

    return true; 
    } 
    else if (timesAttempted < 3) { 
    alert("Invalid Key"); 
    timesAttempted++ 
    return false; 
    } else if (timesAttempted === 3) { 
    window.location.href = "http://www.lolrofl.com" // any redirect logic here 
    } 
} 
+0

私はeclipseをJSP、JSTL、JavaScriptのページ検証に使用していますが、 'let'は認識されませんでした。先ほど、カウンターを3に設定してデクリメントしました。私はあなたの方法を試しました... 'timesAttemped'は最初に1に設定しなければなりませんでした。 2番目のelse ifステートメントでは、データが表示されていないページに感謝するつもりがなければ、私はfalseを返さなければなりませんでした。手伝ってくれてどうもありがとう! upvoted !!! – deechris27

0

function couponValidator() { 
    var couponkey = ["ABCDEF1", "ABCDEF2", "ABCDEF3", "ABCDEF4", "ABCDEF5", "ABCDEF6", "ABCDEF7"]; 
    var attempts = 3; 

    return function() { 
    var keyinput = $('#COUPON').val().trim().toUpperCase(); 

    if (couponkey.indexOf(keyinput) > -1) { 
     return true; 
    } 
    else if (--attempts <= 0) { 
     window.location.href = "your_url" 
    } else { 
     alert("Invalid Key"); 
     return false; 
    } 
    } 
} 

var validate = couponValidator(); 
+0

ありがとう!私は最初にデクリメントを試みましたが(--attempts <= 0)デートしませんでした。私はこれを試してチェックします。ご協力いただきありがとうございます! – deechris27

関連する問題