2017-08-10 8 views
0

お客様がイベントチケットをチェックアウトできるイベントサイトを構築しています。だから私は顧客がチケットの数を選択しなければならないイベントページを持っています。次のページでは、チケットの枚数ごとに座席を選択する必要のある座席図があります。onClickのJquery/Javascriptインクリメントデクリメントグローバル変数

これで、お客様がイベントページ、つまりticket_quantity = 5で5枚のチケットを選択し、座席の地図ページに到達するとします。私がしようとしていることは、顧客が座席マップ上のボタンをクリックし、seats_selectedがticket_quantityと等しい場合、チェックアウトボタンのみが有効になり、条件がticket_quantity!= seats_selectedまたはseats_selected> ticket_quantityまたはseats_selected < ticket_quantityのときに無効にする必要があります。

私はこのためのスクリプトを持っていますが、何とか動作していないか、部分的に動作しています。スクリプトでは、totalSeatsはseatsSelectedの数を保持するグローバル変数であり、条件を確認するために使用されます。 'サムネイル'は、「サムネイルを選択」に切り替えるクラスです。

<script> 
    var totalSeats = 0; 
    $('.thumbnail:not(.unavailable)').click(function(){ 
     $(this).toggleClass('selected').length; 
     totalSeats++; 

     if ({{ticket_quantity}} == totalSeats) { 
      $("#button-checkout").prop("disabled", false); 
     } 

     if ({{ticket_quantity}} != totalSeats) { 
      //totalSeats--; 
      $("#button-checkout").prop("disabled", true); 
     } 

    }); 
</script> 

問題:= tickets_quantity seats_selectedときにはボタンが有効になります。しかし、私がseats_selectedを増やしてからそれを減らすと(例えば:seats_selected = 6そしてそれを再び5に減らすと、それはチェックアウトボタンを有効にしません)。問題は上記のスクリプトのtotalSeatsの数です。 onClickイベントが発生すると、いつでも '1'が追加されます。だからonClickごとにtotalSeatsの数に1を加えています。私はtotalSeats--を試しましたが、それは助けにはなりません。スクリプトの何が間違っているのでしょうか?ありがとう.. !!

答えて

0

増加または減少する必要がありますが、増減は減少します。

<script> 
    var totalSeats = 0; 
    $('.thumbnail:not(.unavailable)').click(function(){ 
     $(this).toggleClass('selected'); 
     if ($(this).hasClass('selected')){ 
      if ({{ticket_quantity}} != totalSeats) { 
       totalSeats--; 
       $("#button-checkout").prop("disabled", true); 
      } 
     } else { 
      if ({{ticket_quantity}} < totalSeats) { 
       totalSeats++; 
      } 

      if ({{ticket_quantity}} == totalSeats) { 
       $("#button-checkout").prop("disabled", false); 
      } 
     } 

    }); 
</script> 

totalSeatsが減少するたびに、このバグに気づきましたか?

+0

はい、私はバグに気づいた、しかし、あなたのスクリプトの中で、私はtotalSeatsのカウントを取得しておりません。関数内で最初に実行されないので、totalSeats数が増えません。 – JJS

+0

私の更新を見てください。 –

+0

ありがとうございます。私はこのコードを試しました。コンソールにエラーはありませんが、何とか私のために働いていません。 @Jonasが言いました "var"のことは私のために騙されました。 – JJS

0

単にクリックハンドラの内部

var totalSeats = $(".selected").length; 

を取得します。


それとも、クラスが設定または削除された場合てmanualyチェックする必要があります。

if($(this).hasClass("selected")){ 
    $(this).removeClass("selected"); 
    totalSeats--; 
}else{ 
    $(this).addClass("selected"); 
    totalSeats++; 
} 
+0

はい、これは機能しました。どうもありがとうございます。それは、選択されたクラスのHTMLページの伝説のために2席を取っていた。あなたの答えに投票しました。 – JJS

+0

@jjs助けて嬉しいです) –

+0

ごめんなさい... –

関連する問題