开发者

Jquery / window.onbeforeload in custom jquery function

I want to add to this code a "window.onbeforeload" event to show a message that prevent the user from quitting the current page without adding the products to cart.

I have to show only when the quantity in > than 0 and with respecting the code below.

How can I do that ?

 <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') {
         t开发者_开发知识库his.value = 0;         
         alert('You can buy only 3, 6, or 9 pieces fromn this product');
     } }); </script>

Thanks for help :)


Not sure why everyone is suggesting globals. This method requires no globals and no change() listener (which you may still need if you want that alert there). Based on MDC, assuming support for [].indexOf:

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;
  }

};

With multiple inputs you will need to change the condition slightly:

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

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


You would need to set some "global" variable. GLobal does not necessarily mean global to the window, just enough it's global in your own namespace (which you hopefully got).

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!';
    }
};


you can save the value in some global variable and then onbeforeunload look for that value, whether it's greater than 0 or not.

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 :(';    
 } }; 
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜