2013-04-22 3 views
5

stackoverflow 및 다른 웹 사이트를 살펴 보았지만 찾고있는 답변을 찾을 수 없습니다.버튼을 한 번만 클릭하십시오. (js)

버튼이 하나 있습니다. 사용자가 한 번만 클릭 할 수 있기를 바랍니다. 이것은 내 자바 스크립트/jquery 클릭 이벤트를 트리거합니다. 하지만 한 번만 클릭 할 수 있도록 강제로 어떻게 할 수 있습니까?

$(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; 

Documentation, CanIUse

관련 문제