Deaktivieren Sie die Schaltfläche nach dem Klicken in JQuery

Lesezeit: 5 Minuten

Benutzer-Avatar
Benutzer3377126

Meine Schaltfläche verwendet AJAX, um Informationen zur Datenbank hinzuzufügen und den Schaltflächentext zu ändern. Ich möchte jedoch, dass die Schaltfläche nach einem Klick deaktiviert wird (andernfalls kann die Person die Informationen in der Datenbank spammen). Wie mache ich das?

HTML

<button class="btn btn-lg btn-primary" id='roommate_but' onclick='load(<?php echo $user_id;?>)'><span class="glyphicon glyphicon-plus"></span> Add Person</button>

Javascript / AJAX / JQuery

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

function load(recieving_id){                                    
    if (window.XMLHttpRequest){
        xmlhttp = new XMLHttpRequest();
    } else{
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    }

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200){  
            document.getElementById("roommate_but").innerHTML =  xmlhttp.responseText;


        }

    }

xmlhttp.open('GET','include.inc.php?i=' + recieving_id, true);

xmlhttp.send();


}

  • Ist jQuery tatsächlich auf der Seite enthalten? Ich frage, weil – obwohl Sie diese Frage mit markiert haben jQuery – In Ihrem Code wird kein jQuery verwendet. Die Antworten können also stark variieren, je nachdem, ob Sie jQuery verwenden können oder nicht.

    – Steve

    11. Mai 2014 um 21:08 Uhr

  • Ja, ich verwende JQuery. Ich habe meinen ursprünglichen Beitrag bearbeitet, um den Link zu JQuery anzuzeigen. Irgendwelche Vorschläge, um die Schaltfläche nach einem Klick zu deaktivieren?

    – Benutzer3377126

    11. Mai 2014 um 21:11 Uhr

  • Bitte unterlassen Sie Verwenden Sie einfaches XHR, wenn Sie bereits jQuery verwenden. Es ist extrem hässlich, beides zu mischen.

    – Meister der Diebe

    11. Mai 2014 um 21:27 Uhr

Benutzer-Avatar
Manoj Yadav

*Aktualisiert

jQuery Version wäre so etwas wie unten:

function load(recieving_id){
    $('#roommate_but').prop('disabled', true);
    $.get('include.inc.php?i=' + recieving_id, function(data) {
        $("#roommate_but").html(data);
    });
}

  • Als ich es in der Ladefunktion hinzufügte, war die Schaltfläche immer noch anklickbar und es stoppte ihre Funktion, Dinge zur Datenbank hinzuzufügen und den Text der Schaltfläche zu ändern. Gibt es eine bestimmte Platzierung für diesen Code, um sicherzustellen, dass er mit den anderen Funktionen der Schaltflächen funktioniert?

    – Benutzer3377126

    11. Mai 2014 um 21:20 Uhr

  • Nach ajax Erfolg entfernen disabledAntwort aktualisiert

    – Manoj Yadav

    11. Mai 2014 um 21:26 Uhr

  • Ich habe die gesamte Ladefunktion durch Ihre Ladefunktion ersetzt (daher AJAX für Jquery ersetzt) ​​und die Schaltfläche wird immer noch nicht nach einem Klick deaktiviert (immer noch anklickbar). Es ist jedoch immer noch in der Lage, dasselbe zu tun wie AJAX, zu einer anderen Seite zu gehen, etwas zu db hinzuzufügen und den Schaltflächentext zu ändern. Wenn es hilft, verwende ich einen Bootstrap-Button. Irgendwas, was ich noch tun kann?

    – Benutzer3377126

    11. Mai 2014 um 21:45 Uhr


  • Wenn Sie die Schaltfläche nach einem Klick deaktivieren möchten, entfernen Sie sie $('#roommate_but').prop('disabled', false);Antwort aktualisiert

    – Manoj Yadav

    11. Mai 2014 um 21:53 Uhr

  • Sie würden viel mehr Daumen hoch bekommen, wenn Sie diese Antwort allgemeiner für den Titel der Frage machen würden: “Schaltfläche nach dem Klicken in JQuery deaktivieren”, die in Google als Top-Ergebnis angezeigt wird. Fügen Sie Informationen zum Deaktivieren direkt in die Antwort ein, zum Beispiel /.

    – Andreas

    15. Dezember 2015 um 16:04 Uhr

Benutzer-Avatar
kPlatten

Sie können dies in jquery tun, indem Sie das Attribut setzen deaktiviert auf „deaktiviert“.

$(this).prop('disabled', true);

Ich habe ein einfaches Beispiel gemacht http://jsfiddle.net/4gnXL/2/

  • Sie sollten wissen, wann Sie es verwenden müssen attr und wann zu verwenden prop. Dies sollte mit erfolgen prop. Hier können Sie mehr darüber lesen.

    – Adam Merrifield

    11. Mai 2014 um 21:23 Uhr

  • Ja, ich glaube, Adam hat recht. Als ich diesen Code ausprobierte: $(‘roommate_but’).click(function(){ $(this).attr(‘disabled’,’disabled’); }); , die Schaltfläche war immer noch nicht deaktiviert. Also muss ich nur attr auf prop ändern, oder? Irgendeine bestimmte Stelle, an der ich den Knopf platzieren kann, damit er funktioniert? Wenn es hilft, verwende ich tatsächlich einen Bootstrap-Button

    – Benutzer3377126

    11. Mai 2014 um 21:27 Uhr

  • -1 für die Verwendung von attr, obwohl .prop() gibt es schon seit jahren. Allerdings beides sollte Arbeit.

    – Meister der Diebe

    11. Mai 2014 um 21:27 Uhr


  • Notiz gemacht @PeterSmith wird aktualisiert. @ user337712 $('roommate_but') sollte sein $('#roommate_but')

    – kPlatten

    11. Mai 2014 um 21:34 Uhr

  • Und wie Sie eine Schaltfläche deaktivieren und ihre Stile beibehalten, da das Attribut “deaktiviert” häufig eine Deckkraft-CSS-Regel enthält.

    – DiDebru

    13. November 2018 um 12:12 Uhr

Überlege auch .attr()

$("#roommate_but").attr("disabled", true); hat bei mir funktioniert.

Benutzer-Avatar
fatimafasna

Dieser Code wird verwendet, um einen bestimmten Kurs zu akzeptieren / abzulehnen, den ein Student im Rahmen der Zuteilung am College erhalten hat.

<script>
    $(document).on('click', '.decline', function() {
     var courseid = $(this).attr('data-id');
     $('#accept_'+courseid).prop('disabled', true);
    });

    $(document).on('click', '.accept', function() {
      var courseid = $(this).attr('data-id');
      $('#decline_'+courseid).prop('disabled', true);
    });
    function accept_decline_action(regno,coursecode,coursename,btnval){

      var url="<?php echo site_url("home/accept_decline_status') ?>';
      $.ajax({
        url: url,
        type: 'POST',
        data: {
          regno: regno,
          coursecode: coursecode,
          coursename: coursename,
          btnval: btnval
        },
        success: function(data) {
          if (btnval == 1) {
            alert("You have accepted the course : "+coursename);
          } else {
            alert("You have declined the course : "+coursename);
          }
        }
      })
    }
</script>
<td role="cell" style="text-align: center;">
  <div>
    <button type="button" data-id = "<?= $mk['coursecode'] ?>" value = 1 
            id = "accept_<?=$mk['coursecode'] ?>" name = "accept" 
            class="btn btn-success accept"                                                             onclick="accept_decline_action('<?= $regno ?>','<?= $mk['coursecode'] ?>');"
            title="Accept" style="border-color:#4CAF50;background-color:                               #4CAF50;">&#10004
    </button>
  </div>
  <div>
    <button type="button" class="btn btn-danger decline" value=0
          data-id="<?= $mk['coursecode'] ?>" id="decline_<?= $mk['coursecode'] ?>"
          name="decline"
          onclick="accept_decline_action('<?= $regno ?>','<?= 
          $mk['coursecode'] ?>');"
          title="Decline" style="background-color:#DC143C; border-color:#DC143C">&#10008
        </button>
      </div>
    </td>
1202350cookie-checkDeaktivieren Sie die Schaltfläche nach dem Klicken in JQuery

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy