2016-03-22 1 views
0

Ich habe drei Kontrollkästchen, die wer überprüft/deaktiviert Werte aus einem Modell. Ich benutze einen Ajax-Post auf Button-Click-Event, um Controller-Aktionen für jedes Checkbox-Changed-Event aufzurufen, um die DB zu aktualisieren.jQuery Click Ereignis CheckBox Geändert Ajax Call

Hier ist der Code für eine der Kontrollkästchen (abgesehen von der Auswahl ID, sie sind alle gleich):

$(document).ready(function() { 

    //document.getElementById('UpdateButton').onclick = function() { 
    $("UpdateButton").click = function() { 
     $('#NatAm').change(function() { 
      // if ($('#NatAm').is(':checked')) { 
      $.ajax({ 
       //url: '@Url.Action("NativeUpdate", "Transactions")', 
        url: '/Transactions/NativeUpdate', 
        //data: { isNativeUp: true }, 

        type: 'POST', 
        dataType: "json" 
       }); 
       //} 
      }); 

Edit (HTML/Code anzeigen):

@Html.CheckBox("NatAm", (bool)@ViewBag.NativeAm) 
<input name="UpdateButton" id="UpdateButton" type="submit" value="Update" style="margin-left: 15px; margin-top: 3px;" class="btn btn-success" /> 

I kann das nicht zur Arbeit bringen. Bevor der Button hinzugefügt wurde, funktionierte der Ajax Post gut. Danke für Ihre Hilfe!

+0

Mit '$ ('# NatAm'). Change' wird' change' Listener anhängen, wenn 'click' ausgelöst wird. Ich bezweifle, dass Sie es so brauchen .. – Rayon

+0

Fügen Sie bitte Ihren HTML Code hinzu. –

+0

@ZakariaAcharki Ich habe den HTML/View-Code – vmil

Antwort

2

Ihr Click-Handler stimmt nicht. Sie müssen die ID der Schaltfläche übergeben und den jQuery-Click-Handler verwenden. Sie müssen auch Nest nicht die Handler:

$(document).ready(function() { 
    $("#UpdateButton").click(update); 
    $('#NatAm').change(update); 
}); 

function update() { 
    $.ajax({ 
    url: '/Transactions/NativeUpdate', 
    type: 'POST', 
    dataType: 'json' 
    }); 
} 

JSFiddle Demo: https://jsfiddle.net/vLzwuwdo/

+0

Ich schätze Ihre Hilfe. Die Handler zu nisten war nicht der richtige Weg. Der Code löst jedoch den Ajax-Post aus, unabhängig davon, ob das Kontrollkästchen geändert wurde oder nicht. – vmil

+0

@vmil https://jsfiddle.net/vLzwuwdo/1/ –

2

Sie sagen JQuery für 'Updatebutton' Tags zu suchen, die in Ihrem Fall nicht existiert. Sie vermissen die #, die eine ID in Ihrer Schaltfläche angibt.

Versuchen Sie, diese

$(document).ready(function() { 

//document.getElementById('UpdateButton').onclick = function() { 
$("#UpdateButton").click(function() { 
    $('#NatAm').change(function() { 
     // if ($('#NatAm').is(':checked')) { 
     $.ajax({ 
      //url: '@Url.Action("NativeUpdate", "Transactions")', 
       url: '/Transactions/NativeUpdate', 
       //data: { isNativeUp: true }, 

       type: 'POST', 
       dataType: "json" 
      }); 
      //} 
     })); 
+0

Ich hatte nicht die Selektor-ID-Syntax korrekt, aber das war nicht das Hauptproblem. – vmil

1
  1. id sollten in demselben Dokument (NatAm und UpdateButton) eindeutig sein, ersetzen Sie die doppelten diejenigen von globalen Klassen wird das erste Problem lösen.

  2. Sie sollten nicht da jedes Mal Ereignis in einem anderes definieren Sie das ersten auslösen wird es neues Ereignis für das Element erstellen, jedes Mal in Ihrem Fall, dass Sie neues Änderungsereignis klicken, wird erstellt und mit NatAm auf das erste Elemente befestigt werden.

Hoffe, das hilft.