2013-04-22 15 views
5

私はstackoverflowやその他のウェブサイトを見渡しましたが、私が探している回答が見つかりませんでした。ボタンを1回だけクリックする(js)

私は一種のボタンを持っています。ユーザーは一度だけクリックすることができます。これはjavascript/jqueryでclickイベントをトリガーします。しかし、一度クリックするだけで済むようにするにはどうしたらいいですか?

$(document).ready(function() { 
    //var $new_total = $('#gtotal').val(); 

    $('#a_is_valid').click(function() { 
     if ($('#code_promo').val() == 'theCode') { 
      $('#gtotal').val($('#gtotal').val() - ($('#gtotal').val() - (($('#gtotal').val() * .75)))); 
     } 
    }) 
}) 
+0

をこれらの答えはあなたを助けていましたか? – PSL

答えて

6

jQueryの.one()機能を使用を使用することです。

$('#a_is_valid').one('click', function(){ 
    if ($('#code_promo').val() == 'theCode') 
    {$('#gtotal').val($('#gtotal').val()-($('#gtotal').val()-(($('#gtotal').val()*.75)))); 
} 
5

あなたはクリックイベントが一度だけ起こることを保証しますjqueryの.one()これを使用することができます。

Demo

$('#a_is_valid').one('click', function(){ 

     if ($('#code_promo').val() == 'theCode') 
     { 
      var gtot = $('#gtotal').val(); 
      $('#gtotal').val(gtot -(gtot -(gtot *.75))); 
     } 
}); 

もう一つの方法は、on()off()

$('#a_is_valid').on('click', handleClick); 

function handleClick() { 
    var gtot = $('#gtotal').val(); 
    $(this).off('click'); 
    if ($('#code_promo').val() == 'theCode') { 
     $('#gtotal').val(gtot - (gtot-(gtot * 0.75))); 
    } 
} 
+2

は 'this' jQueryオブジェクトですか? –

+0

@KevinB指摘に感謝します。 :) – PSL

+1

わかりやすいコードを書く方法を教えてください –

2

なぜ.one()の代わり.click()でしょうか?

+0

私は私が答えたと思った。奇妙な:/はい、皆の質問に答えて、はい彼らは助けました:Dありがとう! 申し訳ありません申し訳ありません、今は投稿できません。私はあなたのすべての時間、心から感謝しています。本当に。もっと言いたいのですが、私は行かなければなりません。 –

0

現代JSを使用してください!

const button = document.getElementById("a_is_valid"); 
button.addEventListener("click", function() { 
    // Add one-time callback 
}, {once : true}); 

また、単にボタンを無効にできます、

button.disabled = true; 

DocumentationCanIUse

関連する問題