2016-11-20 4 views
0

In meinem Code unten ziehe ich Daten aus SharePoint (im Grunde eine Excel-Tabelle) und auf meiner Seite angezeigt. Checkboxen werden mit .innerHTML auf meine Seite geschoben und erhalten programmatisch eine ID.Wie kann ich Kontrollkästchen, die ich programmgesteuert erstelle, erfassen?

Meine Frage: Wie kann ich feststellen, ob diese Kontrollkästchen aktiviert sind (da sie jedes Mal anders sein können, wenn meine App geladen wird)?

(Sobald ich weiß, was überprüft wird, werde ich auf die Kontrollen basiert mehr Metadaten auf der nächsten Seite angezeigt werden - dass ein Teil ich herausgefunden habe)

$.ajax({ 
url: "myWebsite", 
type: "GET", 
headers: { "ACCEPT": "application/json;odata=verbose" }, 
success: function(data){ 
    $.each(data.d.results, function(index) { 
    var $this = $(this); 
    var courseName = $this.attr('Title'); 
    var courseNumber = $this.attr('Course_x0020_Number'); 
    var courseUrl = $this.attr('URL'); 
    var trainingGroup = $this.attr('Training_x0020_Group'); 
    var recurrence = $this.attr('Recurrence'); 

     if (trainingGroup == 'Group1') { 
      if (recurrence == "Don't Specify") {recurrence = ''; 
      } else recurrence = " ("+recurrence+")"; 
      document.getElementById('officeListSpan').innerHTML += '<ul class="courseLists"><li><input type="checkbox" id="'+courseName.replace(/\s+/g, '')+'"/>'+courseName+recurrence+'</li></ul>'; 
     } 
     if (trainingGroup == 'Group2') { 
      if (recurrence == "Don't Specify") {recurrence = ''; 
      } else recurrence = " ("+recurrence+")"; 
      document.getElementById('labListSpan').innerHTML += '<ul class="courseLists"><li><input type="checkbox" id="'+courseName.replace(/\s+/g, '')+'"/>'+courseName+recurrence+'</li></ul>'; 
     } 
    }); 
    }, 
    error: function(){ 
    alert("Failed to query SharePoint list data. Please refresh (F5)."); 
    } 
}); 

Antwort

0

Sie eine Möglichkeit, viele wissen müssen, wird wie Kontrollkästchen wurde erstellt. Wenn Sie die Checkboxen erstellen, müssen sie einen generischen Namen und eine Nummer haben, zum Beispiel id="checkbox0", id="checkbox1 und so weiter, dann schreiben Sie die Anzahl der Checkboxen in einen Teil des HTML-Codes und setzen Sie ein paar hidden Tag. Dann, wenn die Kontrollkästchen Lesen gelesenen Daten die ammount von Kontrollkästchen und tun ein for

function getCheckboxes(){ var ammount = parseInt(document.getElementById("checkBoxesAmmount")); var checkbox; for(var i = 0; i<ammount; i++){ checkbox = document.getElementById("checkbox"+i); //do staff } return;

Ich hoffe, das funktioniert für Sie C:

+0

Mein einziges Problem ist die Anzahl der Checkboxen, die bis ins Unendliche wachsen können (zumindest muss die App dieses Potenzial erwarten) Aber ich werde mit diesem Vorschlag arbeiten! Danke für Ihre Antwort. – Ryan

0

Dieses Bit von jQuery gibt alle überprüft Eingabefelder, die in einem sind ul mit der Klasse courseList:

jQuery('ul.courseList input:checked') 

Wenn Ihre Frage gestellt, weil der Kurs Name ändern könnte (Ihr Checkbox-IDs auf dem Kursnamen basieren), Ich schlage vor, stattdessen zur Kursnummer zu wechseln (oder eine geeignete Mischung aus beidem).

Wenn Sie wissen wollen, ob Ihre Kontrollkästchen aktiviert wurden dynamisch erstellt und wollen diese, bevor das Formular über Javascript tun vorgelegt wird, dann eine Klasse zu Ihrem Kontrollkästchen hinzufügen (sagen wir dynamicCourse) und suchen Sie nach den überprüften Kontrollkästchen über jQuery('input.dynamicCourse:checked') bekommen.

Auch Ihre Kontrollkästchen in Ihrem Beispiel haben kein value Attribut festgelegt. Wenn Sie es an ein Backend senden, möchten Sie wahrscheinlich, dass es einen gewissen Wert hat (die Kursnummer wäre meiner Ansicht nach von dem Aussehen her).

Verwandte Themen