2011-06-29 9 views
2

このコードに「window.onbeforeload」イベントを追加して、カートに商品を追加せずに現在のページを終了できないようにするメッセージを表示します。カスタムjquery関数のJquery/window.onbeforeload

私は数量が0より大きく、以下のコードを基準にして表示する必要があります。

どうすればいいですか?助けのための

<form> <p><input class="qty" 
type="text" maxlength="1" value="0" /></p> 
<p><input class="qty" name="text" 
type="text" value="0" /></p> <p><input 
class="qty" name="text2" type="text" 
/></p> </form> 

<script type="text/javascript"> 

$(".qty").change(function(e) { 
    if(this.value != '3' && this.value != '6' && this.value != '9') { 
     this.value = 0;   
     alert('You can buy only 3, 6, or 9 pieces fromn this product'); 
    } }); </script> 

感謝:)

答えて

0

あなたはいくつかの "グローバル" 変数を設定する必要があります。 GLobalは必ずしもウィンドウのグローバル化を意味するものではなく、自分のネームスペースでグローバル化しているだけです(これはうまくいけば分かります)。

if(this.value != '3' && this.value != '6' && this.value != '9') { 
    NotifyTheUser = true; 
} 
else { 
    NotifyTheUser = false; 
} 

window.onbeforeunload = function() { 
    if(NotifyTheUser) { 
     return 'Check your input.. foo bar yay!'; 
    } 
}; 
1

誰もがなぜグローバルを推奨しているのかよくわかりません。このメソッドにはグローバルは必要なく、リスナーはありません(このアラートが必要な場合はまだ必要な場合があります)。change()

window.onbeforeunload = function (e) { 
    var e = e || window.event; 

    if (['3','6','9'].indexOf($(".qty").val())>=0) { 
    return; 
    } 
    else { 
    var msg = 'You can buy only 3, 6, or 9 pieces from this product'; 

    // For IE and Firefox prior to version 4 
    if (e) { 
     e.returnValue = msg; 
    } 
    // For Safari 
    return msg; 
    } 

}; 
複数の入力を持つ

あなたは少し条件を変更する必要があります:

var valid = true; 
$('.qty').each(function(){ valid = valid && ['3','6','9'].indexOf($(this).val())>=0; }); 

if (valid) { 
    return; 
} 
else { ... } 
0

はあなたには、いくつかのグローバル変数に値を保存することができますし、そのため、その後onbeforeunload[].indexOfのサポートを想定し、MDCに基づいて、値が0より大きいかどうかを判定します。

var valueContainer = 0; 
$(".qty").change(function(e) { 

valueContainer = this.value; 
//rest of your code 
}); 

window.onbeforeunload = function() {  
if(valueContainer == 0) {   
return 'Please Don't go away without selecting any product :(';  
} };