2013-04-22 19 views
5

Ho controllato lo stackoverflow e altri siti Web, ma non sono riuscito a trovare la risposta che sto cercando.facendo clic sul pulsante una sola volta (js)

Ho un pulsante di sorta e desidero che gli utenti SOLO possano fare clic su di esso una volta. Questo è il mio javascript/jquery che attiva l'evento click. Ma come posso forzarlo in modo che possa essere SOLO cliccato una volta?

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

Ha fatto queste risposte aiutare? – PSL

risposta

6

Usa di jQuery .one().

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

È possibile utilizzare jQuery .one() Questo farà in modo che l'evento click avviene una sola volta.

Demo

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

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

Un altro modo è quello di utilizzare la funzione on() e 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' un oggetto jQuery? –

+0

@KevinB grazie per aver segnalato. :) – PSL

+1

Modificato solo per suggerimento su come scrivere codice leggibile –

2

Perché non usare invece di .one().click()?

+0

Pensavo di aver risposto. Strano:/Sì, in risposta alla domanda di tutti, sì hanno aiutato: D Grazie! Siamo spiacenti, non posso pubblicare più per ora. Sono sinceramente grato per tutto il tempo, ragazzi. Veramente. Vorrei poter dire di più, ma devo andare. –

0

Utilizzare il JS moderno!

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

Si potrebbe anche solo disattivare il tasto:

button.disabled = true; 

Documentation, CanIUse

Problemi correlati